基于TestNG的Selenium测试不能并行运行

时间:2018-01-22 13:30:03

标签: java selenium testng

我正在使用下面的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个浏览器并运行测试脚本。

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

任何帮助?

2 个答案:

答案 0 :(得分:3)

这是由于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>

解决方法基本上是在parallel="methods" thread-count="2"级别添加<test>属性。

答案 1 :(得分:0)

分开所有测试然后尝试并行=&#34;测试&#34;

    <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>