【问题标题】:Is it acceptable to use the single instance of webDriver for all scenario in a cucumber feature file对黄瓜功能文件中的所有场景都使用 webDriver 的单个实例是否可以接受
【发布时间】:2018-10-19 16:42:46
【问题描述】:

我为每个功能文件中的所有场景使用单个 EventFiringWebDriver spring bean 创建了一个 cucumber-spring 项目。我的测试运行良好,并且不为每个场景打开一个新的驱动程序减少了总测试时间。这是可接受的做法吗?感谢您的帮助!

【问题讨论】:

  • 你能展示一下它是如何实现的吗?另外,您如何管理设置和拆卸?

标签: selenium-webdriver bdd cucumber-jvm


【解决方案1】:

最佳做法是对每个浏览器进行一次测试。这可以更好地将问题隔离到一次运行中,因此如果一个脚本跑偏,则不太可能影响其他脚本。

如果您还没有,请查看并行执行。这是让事情进展得更快的最佳选择。如果您只添加一个浏览器,您的整体执行时间将减少大约一半...更多浏览器只会让它更快。

【讨论】:

  • 据我了解,只能并行运行 Cucumber 功能文件,而不能从单个功能文件中运行场景。这种并行执行适用于每个功能文件或每个场景有一个浏览器实例。在我当前的实现中,单个浏览器实例中的场景可能会失败,而后续场景仍然按预期运行。
【解决方案2】:

作为标准做法,您应该将驱动程序管理与测试代码分开,这应该根据您在单个或多个浏览器/平台上并行或顺序运行的运行时配置来提供和管理驱动程序会话。

在我们的例子中,我们使用qaf with gherkin 并且 qaf 负责提供线程安全的驱动程序会话以在一个或多个浏览器中并行或顺序运行场景。我们在 xml 配置文件中指定它是标准的 test-ng 配置文件。例如以下配置文件在两个浏览器中并行运行场景(两个浏览器并行):

<suite name="AUT Test Automation" verbose="0" parallel="tests" thread-count="10">

      <test name="Tests on ff" parallel="methods">
           <parameter name="driver.name" value="firefoxDriver" />
           <classes>
               <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
           </classes>
      </test>

      <test name="Tests on chrome" parallel="methods">
           <parameter name="driver.name" value="chromeDriver" />
           <classes>
               <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
           </classes>
      </test>
</suite>

可根据需要进行配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多