Java Selenium,TestNG xml文件,如果在不同的类文件中添加相同的优先级,则按执行顺序发出
我正在将SeleniumWebDriver与TestNG框架一起使用。在xml文件中,我调用了包含2个测试的两个类文件。我为每门课的考试增加了优先级。但它总是以相同的优先级执行来自不同类的所有测试 一班Java Selenium,TestNG xml文件,如果在不同的类文件中添加相同的优先级,则按执行顺序发出,java,xml,selenium,selenium-webdriver,testng,Java,Xml,Selenium,Selenium Webdriver,Testng,我正在将SeleniumWebDriver与TestNG框架一起使用。在xml文件中,我调用了包含2个测试的两个类文件。我为每门课的考试增加了优先级。但它总是以相同的优先级执行来自不同类的所有测试 一班 package demo; import org.testng.annotations.Test; public class testing1 { @Test(priority = 1) public void test1(){ System.out.pri
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 two
Test Three
Test Four
如果我为第二个类添加优先级3和4,它将按照xml文件中给定的顺序执行。但对于具有多个类和测试的项目来说,这是不可行的 测试执行将在testng线程空闲并拾取测试用例时进行 在您的情况下,线程在testing1类中查找测试用例,并在testing1类中找到优先级为1的测试用例,线程将占用方法test1,一旦test1的执行完成,线程将释放并查找另一个要执行的测试用例,它在Testing2类中找到优先级为1的另一个测试用例,因此,线程占用test3方法而不是test2方法 请注意,当使用testng.xml执行时,优先级不受类级别的限制,它将被分析为总体优先级,第一类第一优先级将首先执行 请使用下面的行检查它正在执行的线程
System.out.println("Test Case three with Thread Id:- "+ Thread.currentThread().getId());
要实现您的场景,您可以通过两种方式实现
--删除测试级别的优先级,然后您的测试类将按顺序执行
--将testing2类中的测试用例重新排序为优先级3和优先级4这是TestNG的预期行为。您作为一名员工面临着这个问题
@优先级是全局的
希望这能清楚地说明根本原因
解决方案:
dependsOnMethods
和dependsOnGroups
应该是在类中排序的首选方式
有关这方面的更多见解和信息,请查看下面testNG的github链接
System.out.println("Test Case three with Thread Id:- "+ Thread.currentThread().getId());