有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在使用下面的TestNG配置来启用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
}

硒测试预计将并行运行。我希望有两个浏览器可以打开并运行测试脚本

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

有什么帮助吗


共 (2) 个答案

  1. # 1 楼答案

    这是由于TestNG 6.13.1中的一个错误造成的[有关更多详细信息,请参见GITHUB-1636]

    我已经在TestNG的最新快照(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>
    

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

  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>