我正在将硒WebDriver与TestNG框架一起使用。在xml文件中,我调用了包含2个测试的两个类文件。我为每个班级的考试增加了优先级。但是它总是以不同类别的相同优先级执行所有测试。
第一课
package demo;
import org.testng.annotations.Test;
public class testing1 {
@Test(priority = 1)
public void test1(){
System.out.println("Test one");
}
@Test(priority = 2)
public void test2(){
System.out.println("Test two");
}
}
第二堂课
package demo;
import org.testng.annotations.Test;
public class testing2 {
@Test(priority = 1)
public void test3(){
System.out.println("Test Three");
}
@Test(priority = 2)
public void test4(){
System.out.println("Test Four");
}
}
xml文件
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="CavionTestSuit">
<test name="Testing11">
<classes>
<class name="demo.testing1"></class>
<class name="demo.testing2"></class>
</classes>
</test>
</suite>
这里我得到的输出为:
Test one
Test Three
Test two
Test Four
如何根据添加的优先级一起在每个类中运行测试。 我的预期输出是:
Test one
Test two
Test Three
Test Four
如果我将第二类的优先级添加为3和4,它将按照xml文件中给出的顺序执行。但是,对于具有多个类和测试的项目,这是不可行的。
答案 0 :(得分:0)
当testng线程空闲并选择测试用例时,将执行测试执行。
在您的情况下,线程在test1类中查找测试用例,并找到优先级为1的测试用例,线程将被方法test1占用,一旦执行了test1,线程将处于空闲状态并寻找另一个要执行的测试用例,它在测试2类中发现了另一个优先级为1的测试用例,因此线程占用了test3方法而不是test 2方法
请注意,当使用testng.xml执行时,优先级不会限制在类级别,将对整体优先级进行分析,将首先执行第一类的优先级
请在下面的行中使用它来检查正在执行的线程
System.out.println("Test Case three with Thread Id:- "+ Thread.currentThread().getId());
要实现此目的,您可以通过两种方式实现这一目标
-删除测试级别的优先级,然后将按顺序执行测试类。
-将test2类中的测试用例重新排序为优先级3和优先级4
答案 1 :(得分:0)
这是TestNG的预期行为。您面对的问题是
@Priority
是全局的。
希望这可以清楚地说明根本原因。
解决方案:
dependsOnMethods
和dependsOnGroups
应该是在类中排序事物的首选方式。
有关此的更多见解和信息,请查看下面的testNG github链接。