在开始测试多个功能和方案之前执行一次方法



在我们的Web应用程序中,登录某个页面需要很长时间。我们的功能和方案集是从该特定页面编写的。在该页面之前,我们没有任何验证。大约需要 10 分钟才能到达该页面。

在我进一步解释之前。这是在Cucumber中,我们正在将Selenium与Java一起使用。

因此,应完成登录操作,并且 Web 驱动程序会话应保持不变,然后开始方案验证。以下功能具有以下方案。每个后续方案都依赖于前一个方案。这意味着,这些方案需要按顺序执行。

第一个功能应按顺序执行方案。 然后,第二个功能应按顺序执行方案。 在这两者之间,我不希望为第二种情况创建新会话。 这些都是按顺序依赖的。

我该如何实现?

Feature: Add a product to the quote
So that the quotation can be built on the added product
Scenario: Add a Hub
Given User A has logged in
Then Add button is available
Then Add Hub
Then Enter correct Address details
Then select correct bandwidth
And Save to Quote
Scenario: Add a Spoke
Given User A has logged in
Then Add button is available
Then Add Spoke
Then Enter correct Address details
Then select correct bandwidth
And Save to Quote

Feature: Give discount to the quote for Hub
So that the quotation can be sent to the customer
Scenario: Give 10% discount 
Given Hub has already been added
Then Go to the Quote Tab
Then Enter the discount
Then Save the Quote

功能的顺序运行- 两种方法。首先,取决于黄瓜按字母顺序运行功能的事实。因此,请相应地命名它们。但是这种方法很容易被一个新的功能文件名打破,该名称位于您之前创建的文件名之间。其次,在黄瓜选项特征值中指定运行顺序,例如在运行器文件中features = "second.feature,first.feature"。这将首先运行第二个功能。有关更多详细信息,请参阅此处。

在功能文件中保持驱动程序活动状态- 使用SharedWebDriver的概念,其中包含一个静态WebDriver和一个JVM关闭钩子,该钩子在最后关闭驱动程序。尽管您可能需要在钩子之前和之后添加适当的钩子来清理cookie等。

您应该修复您的 Web 应用程序,以便登录不会花费很长时间,而不是通过尝试在场景之间保留会话来使您的 Cukes 完全不可靠。有时,您的测试会给您反馈,这些反馈应该采取行动,而不是绕过;)

由于登录是一件完全微不足道的事情,99.999% 的 Web 应用程序可以快速有效地完成,我发现很难相信您的应用程序如此特殊以至于您无法做到这一点。如果你不能,那么也许你应该创建一个新问题,解释为什么你的登录速度这么慢,并找到一些解决方案

在方案之间共享会话意味着共享会话的任何 Cuke 都无法在不使方案不可靠的情况下执行任何更改任何数据的操作。这意味着不应允许任何导致 POST 而不是 GET 的交互。所以没有表格填写,提交表格等。

您当然可以解决此问题,但它会产生严重的问题,这些问题只会在以后出现。然后,当场景开始失败时,您需要 10 倍的时间才能弄清楚它们失败的原因,因为您必须了解连接场景的整个链。

最新更新