TestNG组:我们可以包括两个组名并创建一个组来运行测试吗?

Mik*_*ike 5 java testng selenium selenium-rc selenium-webdriver

我有以下testng测试方法。

    @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*/
}
Run Code Online (Sandbox Code Playgroud)

这是用于测试上述方法的testng xml。

<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>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在其中创建一个XML,该XML将包含对“ TSG1.0”和“ SMOKE”组的测试。在这种情况下,我只希望运行第一个测试(testLoginWithInvalidCredentials)。

请帮忙。

谢谢,迈克。

PS:以下内容将不起作用,因为它将包含tsg1.0或Smoke。我想要这里的条件...

<run>
<include name="tsg1.0"/>   
<include name="smoke"/>  
</run>
Run Code Online (Sandbox Code Playgroud)

mac*_*mac 5

你实际上可以做到这个“半现成的”:http : //testng.org/doc/documentation-main.html#beanshell

在您的特定情况下,它会是这样的:

<method-selectors>
  <method-selector>
    <script language="beanshell"><![CDATA[
       return groups.containsKey("tsg1.0") && groups.containsKey("smoke");
     ]]></script>
  </method-selector>
</method-selectors>
Run Code Online (Sandbox Code Playgroud)

刚刚在这里更详细地回答了一个类似的问题: 如果它是两个组的成员,是否可以向 TestNG 设置一个条件来运行测试?


raj*_*esh 2

你可以有一组组

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". 
Run Code Online (Sandbox Code Playgroud)

属性文件示例:

<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>
Run Code Online (Sandbox Code Playgroud)