我正在使用带有 TestNG 框架的 selenium WebDriver。在 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 oneTest ThreeTest twoTest Four如何根据添加的优先级在每个班级中一起运行测试。我的预期输出是:Test oneTest twoTest ThreeTest Four如果我将第二个类的优先级添加为 3 和 4,它将按照 xml 文件中给出的顺序执行。但是对于具有多个类和测试的项目是不可行的。
2 回答
九州编程
TA贡献1785条经验 获得超4个赞
当 testng 线程空闲并选择测试用例时,将执行测试。
在您的情况下,线程在 testing1 类中查找测试用例,并找到优先级为 1 的测试用例,线程将被方法 test1 占用,一旦执行完 test1,线程将空闲并寻找另一个测试用例执行,它在测试2类中发现另一个优先级为1的测试用例,因此线程占用了test3方法而不是test2方法
请注意,当使用testng.xml执行时,优先级不限于class级别,会分析整体优先级,first class first优先执行
请使用下面的行来检查它正在执行的线程
System.out.println("Test Case three with Thread Id:- "+ Thread.currentThread().getId());
要实现您的场景,您可以通过两种方式实现
-- 在测试级别删除优先级,然后您的测试类将按顺序执行。
-- 将 testing2 类中的测试用例重新排序为优先级 3 和优先级 4
添加回答
举报
0/150
提交
取消