未遵循测试NG优先级



在testNG.xml文件中,我有10+个测试类(在测试套件标签内(用于回归测试。 然后,我通过在注释中使用 priority=xxx 来按特定顺序对@Test多个测试类进行自动测试。 特定类中的优先级值是连续的 - 但每个测试类具有不同的范围。 例如:

testClass1 : values are from 1-10 
testClass2 : values are from 11-23    
testClass3 : values are from 31-38 
. 
. 
. 
lastTestClass : values are from 10201-10215

这样做的目的是有一个特定的顺序来执行 10+ 测试类。 在测试执行结束时,我需要执行一个测试类 - 因此,该类中的优先级范围为 10201-10215。但是,这个特定的测试类在第 1 类之后立即进行测试,优先级为 1-10。

我建议您使用依赖项,而不是使用优先级。他们将按严格的顺序运行您的测试,永远不会在依赖之前运行依赖的测试,即使您是并行运行的。

我知道您在不同的类中有不同的范围,因此dependOnMethods您必须指定所引用的测试的根:

@Test(  description = "Values are from 1-10")
public void values_1_10() {
someTest();
}
@Test(  description = "Values are from 21-23",
dependsOnMethods = { "com.project.test.RangeToTen.values_1_10" })
public void values_21_23() {
someTest();
}


如果每个范围内有多个测试,则可以使用dependsOnGroups

@Test(  enabled = true,
description = "Values are from 1-10")
public void values_1_10_A() {
someTest();
}
@Test(  enabled = true,
description = "Values are from 1-10")
public void values_1_10_B() {
someTest();
}
@Test(  enabled = true,
description = "Values are from 1-10",
dependsOnGroups = { "group_1_10" })
public void values_21_23_A() {
someTest();
}
@Test(  enabled = true,
description = "Values are from 1-10",
dependsOnGroups = { "group_1_10" })
public void values_21_23_B() {
someTest();
}


您也可以使用 testng 中的更多选项执行相同的操作.xml: https://testng.org/doc/documentation-main.html#dependencies-in-xml

您拥有的另一个选项是使用"保留顺序": https://www.seleniumeasy.com/testng-tutorials/preserve-order-in-testng

但正如 Anton 所提到的,如果你想并行运行,这可能会给你带来麻烦,所以我建议你使用依赖项。

将测试设计为按特定顺序运行是一种不好的做法。您可能希望将来并行运行测试 - 并且对顺序的依赖将阻止您这样做。

请考虑改用 TestNG 侦听器:

看起来您正在尝试在测试后实施某种拆卸过程。 如果是这种情况 - 您可以实现ITestListener并使用onFinish方法在执行所有测试后运行一些代码。

此外,此 TestNG 注释可能适用于您的案例:

org.testng.annotations.AfterSuite

最新更新