我试图在任意数量的硒网格节点上并行执行相同的测试套件。
- 测试套件是使用 selenium IDE 创建的,并使用批处理转换器导出为 testng
- 这个想法是创建一次测试套件,然后启动任意数量的节点来并行运行该特定套件
- 现在,我有 1 个正在运行的集线器 + 2 个连接到该集线器的遥控器
我的 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>
我的问题:
- 当我执行上面的测试套件时,只有一个遥控器执行测试,而我的第二个遥控器保持空闲。
- 我知道我目前使用“selenium.port”直接寻址遥控器,但我正在寻找一种方法来避免这种将测试分配给遥控器的僵化方式
当我添加其他元素时,元素 (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>
我的问题:
- 如何正确定义测试套件,以便将其安排在任意数量的正在运行的遥控器上?
谢谢!