【问题标题】:How can I avoid conflicts running Selenium tests in parallel, when they must exercise an underlying REST API?当必须运行底层 REST API 时,如何避免并行运行 Selenium 测试的冲突?
【发布时间】:2015-09-14 12:07:48
【问题描述】:

我有一个 Web 应用程序,需要在多个环境中的多个浏览器中进行测试(即 Windows 和 Linux* 中的 Chrome、Firefox 和 Internet Explorer(* Internet Explorer 明显例外))。

使用 JBehave、Selenium 和 SerenityBDD (Thucydides) 用 Ja​​va 编写了测试。这些测试使用底层 REST API,测试是否可以使用 UI 成功创建和删除对象。

我正在使用 Selenium Grid,并希望在并行节点上运行测试;然而,令人担忧的是,当测试执行底层 REST API 时,可能会出现冲突。

是否可以将参数作为运行测试的 Jenkins 作业配置中的参数传递给测试,以便依赖于它们执行的节点的测试略有不同? (例如,在 Chrome 上创建了一个名为“MYOBJECT-CHROME”的对象,而在 Firefox 上创建了一个名为“MYOBJECT-FIREFOX”的对象,这意味着可以避免任何 REST API 冲突?)

【问题讨论】:

    标签: selenium jenkins selenium-grid jbehave thucydides


    【解决方案1】:

    如果被测软件(SUT)允许多线程 REST API 请求,您无需担心

    意味着可以避免任何冲突?

    测试并发请求应设置为固定装置,这意味着每个原子测试都应设置/拆除所需的测试数据或返回被测软件的 (SUT) 状态。一个好的候选人是Prebuilt fixture。它将允许您将其添加为 Jenkins 中的一个步骤,并且可以减少创建所有这些测试对象的开销。

    如果您仍然需要parameterize the build,您可以使用 BDD 中的套件 @tags 来定义将执行哪一组测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      相关资源
      最近更新 更多