[英]TestNG: How to include test groups that are in 2 groups (AND filter)
我想在测试套件中尽可能地灵活-我希望能够:
因此,我进行了一些测试:
@Test(groups = {"p1", "module1"})
public void p1module1() {
System.out.println("p1module1");
}
@Test(groups = {"p2", "module1"})
public void p2module1() {
System.out.println("p2module1");
}
@Test(groups = {"p1", "module2"})
public void p1module2() {
System.out.println("p1module2");
}
@Test(groups = {"p2", "module2"})
public void p2module2() {
System.out.println("p2module2");
}
但是如果我做这样的事情
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="qa-selenium">
<test name="My Suite">
<groups>
<run>
<include name="p1"/>
<include name="module1"/>
</run>
</groups>
<packages>
<package name="com.mycompany.qa.selenium.*"/>
</packages>
</test>
</suite>
包括被视为或,但我想要一个与。 在这种情况下,我想创建一个仅执行p1module1()的套件
我意识到我可以使用大量的排除-在这个例子中
<exclude name="p2"/>
<exclude name="module2"/>
但我真的想避免这种情况。 有没有办法做到这一点,最好不用元编程?
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="qa-selenium">
<test name="My Suite">
<groups>
<define name="functest">
<include name="p1"/>
<include name="p2" />
<include name="module1"/>
<include name="module2"/>
</define>
<define name="all">
<include name="functest" />
</define>
<run>
<include name="all"/>
</run>
</groups>
<packages>
<package name="your_package_name" />
</packages>
</test>
</suite>
您可以尝试上述操作,以便使用所有可能的组合进行测试。
上面的xml组以以下方式给我输出(采用所有可能的组合)。
您可以使用通用的包含名称的第一部分,然后在包含名称中使用它来执行所有测试,如下所示
测试组如下
@Test(groups = {"a-p1", "a-module1"})
public void p1module1() {
System.out.println("p1module1");
}
@Test(groups = {"b-p2", "b-module1"})
public void p2module1() {
System.out.println("p2module1");
}
@Test(groups = {"c-p1", "c-module2"})
public void p1module2() {
System.out.println("p1module2");
}
@Test(groups = {"d-p2", "d-module2"})
public void p2module2() {
System.out.println("p2module2");
}
Suite xml如下所示
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="qa-selenium">
<test name="My Suite">
<groups>
<run>
<include name="a.*"/>
<include name="b.*"/>
<include name="c.*"/>
<include name="d.*"/>
</run>
</groups>
<packages>
<package name="com.mycompany.qa.selenium.*"/>
</packages>
</test>
</suite>
在上面的xml中, <include name="a.*"/>
将执行测试,这些测试的标签为"a-p1", "a-module1"
无需为P1和模块定义单独的包含名称, enter code here
为其他名称使用,它将被视为AND而不是OR,请让我知道您问题的正确答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.