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
,与测试中方法的顺序无关。
我正在探索 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
,与测试中方法的顺序无关。