当前位置: 首页 > 知识库问答 >
问题:

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

封飞
2023-03-14

我使用下面的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
}

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

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

有什么帮助吗?

共有2个答案

充高扬
2023-03-14

分离所有测试,然后尝试并行="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>
叶智
2023-03-14

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

解决方法基本上是在

 类似资料:
  • 我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。

  • 当我试图在Selenium Grid 2旁边使用TestNG并行运行测试时,我似乎遇到了一个问题。 尽管打开的浏览器数量与我正在运行的测试数量相匹配,但所有测试的所有指令都被发送到同一个浏览器窗口。例如,每个测试都会打开一个页面并尝试登录。四个浏览器窗口将打开,但一个浏览器窗口将导航到登录页面四次,然后键入用户名四次,而其余的浏览器窗口保持不活动。 以下是我如何启动网格: xml套件是这样设置的:

  • 需要一些帮助来获得并行运行testng测试用例的正确方法。

  • 我正在尝试在不同的Android设备上并行运行我的自动化套件(使用Selenium WebDrive(Java)TestNG Maven实现)。这是我在xml中的代码: 在TotoTest课上,我有20个测试。它们中的每一个都有注释@Test。当我运行xml时,两个设备并行运行类TotoTest。所以我的设备1(模拟器1)运行20个测试,我的设备2(模拟器2)也运行20个测试。 但是我想要的是,模

  • 我正在使用testNg硒网格进行测试会话,我对整个东西非常满意 关键是测试的数量正在增长,现在它们至少需要 3 小时才能执行(在 30 个浏览器上进行 -100 次测试) 我计划进行 -150 次测试,所以,正如您可以想象的那样,我必须找到一个解决方案并并行启动它们 我试图玩一下这个,但没有现在很幸运,我现在看到的是两个浏览器启动,但只有一个通过测试。另一个只是等待:-)测试的结构如下,基本上 1