TestNG方法执行默认优先顺序

TestNG method execution default priority sequence

我正在探索 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");
}

输出:测试用例1 测试用例3 测试用例 2

即使我更改了 TestCase3 和 TestCase1 的序列,输出也是相同的。

我知道

If you don't mention the priority, it will take all the test cases as "priority=0" and execute.

问题 为什么 TestCase1 在 TestCase3 之前执行?

这是因为 1 在 3 之前,所以直到测试用例一切都相同,但不同的是 id 数值。默认优先级为 0.

如果您不配置,TestNG 默认不指定顺序。它可能会在版本之间发生变化。

在您的示例中,观察到的结果是正确的,但预期的结果也可能是正确的。

使用 testng 可以指定脚本执行不同测试用例的优先级。如果没有在脚本中分配优先级,而只是对所有测试用例仅提及@Test,那么脚本可能会随机执行所有不同的测试,这可能会导致脚本失败。例如,您有登录测试,然后您有来自填写验证的用户个人信息。所以在这种情况下,如果您没有为登录测试和用户个人信息填写测试分配优先级,那么脚本可能会先执行用户个人信息填写测试,然后再进行登录测试,在这种情况下,脚本会失败,因为登录屏幕脚本正在执行用户个人信息填写测试

相反,如果您将优先级@Test(priority = 0) 分配给登录测试,然后将@Test(priority = 1) 分配给用户个人信息填写测试,则脚本必须先执行priority=0,然后再执行priority=1。

而testNG注解@Test(priority=0),@Test(priority = 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()会执行。

根据所附的屏幕截图,看起来 no priority 首先执行,然后优先级 Zero,与测试中方法的顺序无关。