我试图在任意数量的selenium-grid节点上并行执行相同的测试套件。
我的testng.xml看起来像这样
<suite name="mysuite1" verbose="20" annotations="JDK" parallel="tests" thread-count="20" >
<parameter name="selenium.host" value="localhost"></parameter>
<parameter name="selenium.port" value="4444"></parameter>
<parameter name="selenium.browser" value="*firefox"></parameter>
<parameter name="selenium.restartSession" value="false"></parameter>
<test name="mytest1" preserve-order="true">
<parameter name="selenium.port" value="5557"></parameter>
<parameter name="selenium.browser" value="*firefox"></parameter>
<parameter name="selenium.url" value="http://localhost:8080"></parameter>
<classes>
<class name="my.testsuite1" />
<class name="my.testsuite2" />
</classes>
</test>
我在build.xml中使用的目标如下所示
<target name="run-parallel" depends="compile" description="Run-Parallel">
<echo>${host}</echo>
<java classpathref="runtime.classpath" classname="org.testng.TestNG" failonerror="true">
<sysproperty key="java.security.policy" file="lib/testng.policy"/>
<sysproperty key="webSite" value="${webSite}" />
<sysproperty key="seleniumHost" value="${host}" />
<sysproperty key="seleniumPort" value="${port}" />
<sysproperty key="browser" value="${browser}" />
<arg value="-d" />
<arg value="${basedir}/target/reports" />
<arg value="-suitename" />
<arg value="suite1" />
<arg value="-parallel"/>
<arg value="tests"/>
<arg value="-threadcount"/>
<arg value="20"/>
<arg value="testng.xml"/>
</java>
我的问题:
当我添加其他元素时,元素(my.testsuite1-4)中列出的所有类都是以随机顺序执行的。
<test name="mytest2" preserve-order="true">
<parameter name="selenium.port" value="5558"></parameter>
<parameter name="selenium.browser" value="*firefox"></parameter>
<parameter name="selenium.url" value="http://localhost:8080"></parameter>
<classes>
<class name="my.testsuite3" />
<class name="my.testsuite4" />
</classes>
我的问题:
谢谢!
答案 0 :(得分:2)
您的所有测试都应该访问Selenium Grid中心。集线器负责根据请求的功能调度节点。一旦并行运行测试,就会失去定义执行顺序的能力。每个测试都应该是隔离的。这包括您在后端可能需要的任何数据,例如数据库修改。