Я пытаюсь выполнить один и тот же набор тестов параллельно на произвольном количестве узлов селеновой сетки.
- Набор тестов был создан с помощью 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>
The target I'm using in the build.xml looks like this
<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 problem:
- Когда я выполняю приведенный выше набор тестов, только один пульт дистанционного управления выполняет тест, в то время как мой второй пульт остается бездействующим.
- Я знаю, что в настоящее время обращаюсь к пультам дистанционного управления напрямую, используя "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>
My question:
- Как я могу правильно определить набор тестов, чтобы он был запланирован на любое количество запущенных удаленных элементов управления?
Спасибо!