TestNG方法执行默认优先级序列

时间:2016-04-25 17:07:52

标签: testng

我正在探索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。

4 个答案:

答案 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

enter image description here