我正在探索TestNG注释。我遇到了下面的情况,假设我有3个测试,我已经指定了2个测试的优先级,一个是没有优先级注释的默认测试
@Test(groups={"smoke","sanity"},priority=1)
public void TestCase2(){
System.out.println("TestCase2");
}
@Test(priority=0)
public void TestCase3(){
System.out.println("TestCase3");
}
@Test()
public void TestCase1(){
System.out.println("TestCase1");
}
输出:TestCase1 TestCase3 TestCase2
即使我改变了一系列的TestCase3& TestCase1,输出相同。
我知道
如果您没有提到优先级,它将把所有测试用例都作为“priority = 0”并执行。
问题是TestCase1在TestCase3之前执行的原因吗?
这是因为1来到3之前所以直到testcase averything相同但是diffrence id数值。默认情况下,优先级为0。
答案 0 :(得分:1)
如果您没有配置,TestNG默认情况下不会指定订单。它可能会在版本之间发生变化。
在您的示例中,观察到的结果是正确的,但预期的结果也是正确的。
答案 1 :(得分:1)
使用testng可以为脚本分配执行不同测试用例的顺序分配优先级。如果没有在脚本中分配优先级并且只提及@Test到所有测试用例,则脚本有可能随机执行所有不同的测试并且可能导致脚本失败。例如,您有登录测试,然后您有来自填充验证的用户个人信息。因此,在这种情况下,如果您没有为登录测试和用户个人信息填充测试分配优先级,那么脚本可以首先执行用户个人信息填充测试然后登录测试,在这种情况下脚本失败,因为登录屏幕脚本正在执行用户个人信息填写测试。
相反,如果您将优先级@Test(优先级= 0)分配给登录测试,然后将@Test(优先级= 1)分配给用户个人信息填充测试,则脚本必须先执行priority = 0,然后优先级= 1。
当您想要生成测试执行报告时,testNG注释@Test(priority = 0),@ Test(priority = 1)等等非常重要。
答案 2 :(得分:1)
@Test(priority=0)
public void TestWithZeroPriority(){}
@Test
public void TestWithDefaultPriority(){}
TestNG认为两个测试用例具有相同的优先级签名。因此测试用例TestNG在内部解释如下
@Test(priority=0)
public void TestWithZeroPriority(){}
@Test(priority=0)
public void TestWithDefaultPriority(){}
现在,TestNG按字母顺序执行测试。因此,TestWithDefaultPriority()
将首先执行,然后TestWithZeroPriority()
将被执行。
答案 3 :(得分:0)
根据所附的屏幕截图,无论测试中方法的顺序如何,看起来先执行no priority
然后执行优先级Zero
。