Selenium,TestNG xml文件,如果在不同的类文件中添加了相同的优先级,则按执行顺序发出

时间:2018-08-27 10:13:48

标签: java xml selenium selenium-webdriver testng

我正在将硒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文件中给出的顺序执行。但是,对于具有多个类和测试的项目,这是不可行的。

2 个答案:

答案 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是全局的。

希望这可以清楚地说明根本原因。

解决方案: dependsOnMethodsdependsOnGroups应该是在类中排序事物的首选方式。

有关此的更多见解和信息,请查看下面的testNG github链接。

https://github.com/cbeust/testng/issues/1324

https://github.com/cbeust/testng/issues/1309