我希望我的测试套件尽可能灵活 - 我希望能够:
我有一些测试:
@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>
包含被视为OR,但我想要一个AND。在这种情况下,我想创建一个只执行p1module1()
的套件我意识到我可以使用大量的排除 - 在这个例子中
<exclude name="p2"/>
<exclude name="module2"/>
但我真的想避免这种情况。有没有办法做到这一点,最好没有元编程?
答案 0 :(得分:0)
<!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组以下列方式给出了输出(它采用了所有可能的组合)。
答案 1 :(得分:0)
您可以使用包含名称common的第一部分,然后在include name中使用它来执行所有测试,如下所示
测试组如下
@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");
}
套件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,请告诉我你问题的正确答案