要使用testng和selenium网格运行并行测试,我确实遵循了步骤。
1)注册的枢纽和网格: -
java -jar selenium-server-standalone-2.26.0.jar -role hub
java -jar selenium-server-standalone-2.26.0.jar -role node -
Dwebdriver.chrome.driver="C:\D\chromedriver.exe" -hub
http://localhost:4444/grid/register -browser browserName=chrome,version=24,maxInstances=15,platform=WINDOWS
2)提供功能并实例化RemoteWebDriver的Java代码。
DesiredCapabilities capability=null;
capability= DesiredCapabilities.chrome();
capability.setBrowserName("chrome");
capability.setVersion("24");
capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
driver.get(browsingUrl);
3)Suite.xml
<suite name="testapp" parallel="tests" >
<test verbose="2" name="testapp" annotations="JDK">
<classes>
<class name="com.testapp" />
</classes>
</test>
<profile>
<id>testapp</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<parallel>tests</parallel>
<threadCount>10</threadCount>
<suiteXmlFiles>
<suiteXmlFile>target/test-classes/Suite.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
运行maven测试
mvn test -Ptestapp
调用集线器配置
http://localhost:4444/grid/console?config=true&configDebug=true
告诉我有15个chrome实例可用,但运行mvn命令只打开了一个chrome实例。如果我做错了,请告诉我。
答案 0 :(得分:2)
在Suite.xml中,您配置了属性parallel = tests
。但实际上,xml文件中只有一个test
标记。因此,没有机会启动两个chrome实例。
请参阅Testng文档here for more about parallelism.
修改强>
<suite name="testapp" parallel="classes" >
<test verbose="2" name="testapp" annotations="JDK">
<classes>
<class name="com.testapp"/>
<class name="com.testapp"/>
</classes>
</test>
</suite>
通过上述XML文件,类@Test
中存在的com.testapp
方法将在两个不同的线程中运行(即并行模式)。
如果要以并行方式运行单个@Test
方法,则将XML文件parallel
属性配置为methods
。
答案 1 :(得分:0)
在testng中,对于parallel属性,parallel =“methods”表示所有使用@Test注释的方法都是并行运行的。
parallel =“tests”表示,如果你有
<test name = "P1">
<classes>....</classes>
</test>
<test name = "P2">
<classes>....</classes>
</test>
P1和P2将并行运行。如果两个测试中的类相同,则可能会发生相同的方法并行开始运行。
另外,pom部分有
<parallel>tests</parallel>
<threadCount>10</threadCount>
将始终被您在testng.xml中指定的内容覆盖。所以你不需要你的surefire部分来包含那些数据,因为如果你指定一个xml,它会占用你在xml中指定的内容,如果xml没有为parallel指定任何值,那么默认值false将覆盖您在ur pom中指定的内容。