【问题标题】:Execute a method once before testing starts for several features and scenarios在开始测试几个功能和场景之前执行一次方法
【发布时间】:2018-04-11 05:59:22
【问题描述】:

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

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

所以应该完成登录操作,并且 webdriver 会话应该保持不变,然后场景验证开始。以下功能具有以下场景。每个后续场景都依赖于前一个场景。这意味着,这些场景需要按顺序执行。

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

我该如何实现?

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

【问题讨论】:

    标签: java selenium frameworks cucumber pageobjects


    【解决方案1】:

    功能的顺序运行 - 两种方法。第一个,取决于 cucumber 以 alphabetic 顺序运行功能这一事实。因此,相应地命名它们。但是这种方法很容易被一个新的功能文件名破坏,该文件名位于您之前创建的文件名之间。其次,在 runner 文件中的 cucumberoptions 特征值中指定运行顺序,例如features = "second.feature,first.feature"。这将首先运行 second.feature。详情请参考this

    跨功能文件保持驱动程序活动 - 使用 SharedWebDriver 的概念,其中有一个静态 WebDriver 和一个 JVM 关闭钩子,它在最后关闭驱动程序。虽然您可能需要在清除 cookie 等之前和之后添加适当的钩子。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-26
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        相关资源
        最近更新 更多