【问题标题】:TestNG Based Selenium Tests not running in Parallel基于 TestNG 的 Selenium 测试未并行运行
【发布时间】:2018-07-01 03:40:48
【问题描述】:

我正在使用下面的 TestNG Config 来启用 Selenium 测试的并行执行。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Test-Automation" parallel="methods" thread-count="2" verbose="1">

    <test name="Suite Test">
        <classes>
            <class name="SampleTest">
                <methods>
                    <include name="firstTest"/>
                    <include name="secondTest"/>
                    <include name="thirdTest"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

Java 代码:

@Test(dataProvider = "TestData")
public void firstTest(String data){
   //Code
}

@Test(dataProvider = "TestData")
public void secondTest(String data){
   //Code
}

@Test(dataProvider = "TestData")
public void thirdTest(String data){
   //Code
}

Selenium 测试预计将并行运行。我希望打开 2 个浏览器并运行测试脚本。

但我只看到 1 个浏览器,所有 3 个测试一个接一个地运行,而不是并行运行。我尝试使用“并行”属性的测试、方法、类、实例选项。

有什么帮助吗?

【问题讨论】:

  • 您使用的是什么版本的 TestNG?
  • @KrishnanMahadevan:我使用的是 6.13.1

标签: java selenium testng


【解决方案1】:

这是由于 TestNG 6.13.1 中的一个错误 [参见GITHUB-1636 了解更多详细信息]

我已在 TestNG 的最新 SNAPSHOT (6.14-SNAPSHOT) 中修复了这个问题,这应该可以在 TestNG (6.14) 的发布版本中使用。

但在那之前,请将您的套件 xml 文件更改为如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Test-Automation" parallel="methods" thread-count="2" verbose="1">
    <test name="Suite Test" parallel="methods" thread-count="2" verbose="1">
        <classes>
            <class name="SampleTest">
                <methods>
                    <include name="firstTest"/>
                    <include name="secondTest"/>
                    <include name="thirdTest"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

解决方法基本上是在&lt;test&gt; 级别添加属性parallel="methods" thread-count="2"

【讨论】:

【解决方案2】:

把所有的测试分开,然后用parallel="test"试试

    <test name="Suite Test1">
        <classes>
              <class name="//..//packg name..SampleTest">

            </class>
        </classes>
    </test>
  <test name="Suite Test2">
        <classes>
            <class name="//..//SampleTest">

            </class>
        </classes>
    </test>
  <test name="Suite Test3">
        <classes>
            <class name="//..//packg name..SampleTest">

            </class>
        </classes>
    </test>

</suite>

【讨论】:

  • 是否将所有方法从 1 个类分离到多个测试,这是唯一的方法吗?所有测试方法都来自单个类。
  • 这是不正确的。将一个具有 3 个方法(属于单个 &lt;test&gt; 标记的一部分)的类分成 3 个 &lt;test&gt; 标记,每个类和一个方法是相同的。这并不能解决问题。
  • 实际上这种复制可以在 2 个浏览器中并行运行。但这会在 xml 配置中产生重复的行。
猜你喜欢
  • 1970-01-01
  • 2017-07-22
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多