I have following testng test methods.
@Test(groups = {"tsg1.0","smoke"})
public void testLoginWithInvalidCredentials(String usernameValue, String passwordValue){
/*Print something*/
}
@Test(groups = {"tsg1.0"})
public void testLoginWithUserIdOnly(String username) {
/*Print something*/
}
@Test(groups = {"tsg1.0"})
public void testLoginWithPasswordOnly(String password) {
/*Print something*/
}
Here is the testng xml used to test the above methods.
<suite name="Suite" thread-count="1" verbose="10">
<test name="Test">
<groups>
<run>
<include name="tsg1.0"/>
</run>
</groups>
<packages>
<package name="<test package name>"/>
</packages>
</test>
</suite>
Is there a way where in I can create one xml which will include tests with Groups "TSG1.0" AND "SMOKE". I want only the first test(testLoginWithInvalidCredentials) to be run in this case.
Please help.
Thanks, Mike.
PS: The following won't work as It will include tsg1.0 or smoke. I want an and condition here...
<run>
<include name="tsg1.0"/>
<include name="smoke"/>
</run>
You can actually do this "semi off the shelf": http://testng.org/doc/documentation-main.html#beanshell
In your particular case, it would be something like this:
<method-selectors>
<method-selector>
<script language="beanshell"><![CDATA[
return groups.containsKey("tsg1.0") && groups.containsKey("smoke");
]]></script>
</method-selector>
</method-selectors>
Just answered a similar question in more detail here: Is it possible to put a condition to TestNG to run the test if that is member of two groups?
AFAIK that doesn't come off the shelf in testng. What you can probably do is write your methodinterceptor and return only the list of thsoe methods which fall in both the groups..
You can also get the includedgroups from the testcontext param of the intercept method.
You can refer here for more : http://testng.org/doc/documentation-main.html#methodinterceptors
You can have a Group of groups.
Groups can also include other groups. These groups are called "MetaGroups".
For example, you might want to define a group "all" that includes "checkintest"
and "functest"."functest" itself will contain the groups "windows" and "linux"
while "checkintest will only contain "windows".
A property file sample:
<groups>
<define name="functest">
<include name="windows"/>
<include name="linux"/>
</define>
<define name="all">
<include name="functest"/>
<include name="checkintest"/>
</define>
<run>
<include name="all"/>
</run>
</groups>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With