Я пытаюсь запустить несколько комплектов testng параллельно с разными параметрами с помощью cucumber. С каждым комплектом tesng я пытаюсь передать разные браузеры, testinfo и т. Д. Я хотел бы добиться этого с помощью параметров командной строки maven.
Я следовал за постом в https://rationaleemotions.wordpress.com/2016/03/29/parallel-execution-of-multiple-testng-suites/#comment-1723. Что я хотел бы сделать, это запустить наборы параллельно с другим набором параметров JVM.
Я попробовал следующий способ, чтобы добиться того же, и он просто запускает один браузер Firefox для выполнения тестов и полностью игнорирует браузер Chrome (даже не запускается последовательно)
mvn verify -Dcucumber.options="--tags @123" -DGrid="false" -Dbrowser="chrome"
-Durl="https://abc.xyz.com" -Dtestinfo="R3.0-Regression-chrome" -DNewuser="123test1"
-DsuiteXmlFile=Chrometestng.xml,-Dcucumber.options="--tags @123" -DGrid="false"
-Dbrowser="firefox" -Durl="https://abc.xyz.com" -Dtestinfo="R3.0-Regression-FF"
-DNewuser="123test2" -DsuiteXmlFile=FFtestng.xml -Dthreads=2
Мой уверенный огонь как ниже
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<suiteXmlFiles>
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
<skipTests>false</skipTests>
<properties>
<property>
<name>suitethreadpoolsize</name>
<value>${threads}</value>
</property>
</properties>
</configuration>
Мой тест такой, как показано ниже
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.2</version>
<scope>test</scope>
Мои chrometestng.xml и Chrometestrunner, как показано ниже (FFtestng.xml и FFrunner аналогичны chrome, за исключением изменения имени комплекта / теста)
<suite name="ChromeSuite" parallel="false">
<test name="ChromeTest">
<classes>
<class name="abc.runner.ChromeTestRunner"></class>
</classes>
</test> <!-- Test -->
@RunWith(ExtendedCucumber.class)
@ExtendedCucumberOptions(
jsonReport = "target/cucumber.json",
detailedReport = true,
jsonUsageReport = "target/cucumber-usage.json",
toPDF = true,
excludeCoverageTags = {"@flaky" },
includeCoverageTags = {"@passed" },
reportPrefix = "abc_Report",
outputFolder = "abc_Reports/PDFReports/${testinfo}/DATE(yyyy-MM-dd-HH-mm-SS)/")
@CucumberOptions(plugin = { /*"html:target/cucumber-html-report",*/
"json:target/cucumber.json"/*, "pretty:target/cucumber-pretty.txt",
"usage:target/cucumber-usage.json", "junit:target/cucumber-results.xml"*/ },
features={"src/test/resources/featurefiles"},strict = false, dryRun=false,
glue = {"abc_stepdefinitions"},
tags = {"@123"})
@Test
public class ChromeTestRunner extends ExtendedTestNGRunner {
}
когда я попробую это
mvn verify DsuiteXmlFile=Chrometestng.xml,FFtestng.xml -Dthreads=2
Alteast запускает два браузера Chrome параллельно.
Я пытаюсь выяснить, что неверно в моем подходе и как правильно сделать это. Если это невозможно, могу ли я иметь несколько тестовых тегов (chrome / ff / ie) в одном наборе и передавать информацию об уровне тестирования отдельно для каждого из этих тестов из командной строки maven.
Я сомневаюсь, что я могу перезаписывать значения JVM как -Dbrowser = "chrome", перезаписывается -Dbrowser = "firefox"
Подробнее
Я в основном пытаюсь провести кросс-браузерное тестирование с огурцом параллельно. В этом случае я могу, по сути, иметь 3 тестовых тега в одном наборе (каждый для chrome, ff, т.е.), но меня беспокоит то, как передать параметры, такие как браузер , testinfo (уникальная для каждого теста) отдельно от командной строки maven. Здесь будет работать что-то вроде -Dchrometest.browser = "chrome" и -Dfirefoxtest.browser = "firefox". Прямо сейчас у меня есть 3 пакетных файла для каждого браузера и запускает 3 одновременных. Таким образом, 3 отдельных экземпляра JVM. Недостатком является то, что загрузка ЦП всегда составляет 100%, а IE неизменно дает сбой