Reputation: 143
I want to run test cases depending on variables passed from jenkins for example, choose testcases you want to run : testcaseOne, testcaseTwo
in pom.xml (maven) :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
<systemPropertyVariables>
<chooseCase>${chooseCase}</chooseCase> <--this dont work
</systemPropertyVariables>
<parallel>tests</parallel>
<threadCount>10</threadCount>
</configuration>
</plugin>
I have two testng @test methods:
@Test(groups="caseOne")
@Test(groups="caseTwo")
And my testng.xml file:
<test name="Test">
<groups>
<run>
<include name="${chooseCase}"/>
</run>
</groups>
<classes>
<class name="AppTest"/>
<class name="AppTest2"/>
</classes>
</test> <!-- Test -->
How to pass this parameter depending on what and how many tests i want to run ? Maybe there is totally different way to do this ?
Upvotes: 4
Views: 5391
Reputation: 1036
You can use BeanShell script in your testng.xml file http://testng.org/doc/documentation-main.html#beanshell and read system variables in it, something like:
<test name="Test">
<method-selectors>
<method-selector>
<script language="beanshell">
<![CDATA[
String myTestGroup = System.getProperty("chooseCase");
groups.containsKey(myTestGroup);
]]>
</script>
</method-selector>
</method-selectors>
<classes>
<class name="AppTest"/>
<class name="AppTest2"/>
</classes>
</test>
Upvotes: 3