如何在testng.xml文件中安排类的执行?

时间:2017-01-24 10:42:27

标签: selenium-webdriver testng

在一个包中,我有多个类。但是如何在testng中一个接一个地安排类的执行。 我的testng.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<suite name="AutomationTestWrangler">

<test name="Smoke Testcases">
    <classes>
        <class name="DataWrangler.LoginResigterComponents"/>
        <class name="DataWrangler.Register"/>
        <class name="DataWrangler.Login"/> 
        <class name="DataWrangler.Dashboard"/>
    </classes>
</test>

</suite>

但执行按以下顺序执行。我的testng输出按顺序进行

DataWrangler.Register
DataWrangler.Login
DataWrangler.LoginResigterComponents

如何制定执行计划

DataWrangler.LoginResigterComponents
DataWrangler.Register
DataWrangler.Login

2 个答案:

答案 0 :(得分:1)

我在几天之前就遇到了同样的问题。我发现有问题的代码是,我在不同的类中优先考虑一些测试方法。当我从testing.xml执行所有类时,它首先执行优先级方法类。所以这可能是你的问题。

我这里的指南很少 -

  1. 如果您的要求是使用xml执行一堆类,那么您的类中的测试方法的依赖性会更好。
  2. 仔细使用测试方法中的priority。如果为不同类的两种不同测试方法分配了相同的优先级并使用xml文件执行代码,则无论您在xml文件中维护的顺序如何,都将首先执行第一优先级测试方法。
  3. 您可以尝试的另一种替代解决方案是在group-by-instances="true"文件的<test>标记中添加xml

    例如 -

    <test name="parallel-running-test" group-by-instances="true">
    

    已更新: - 这是优先级的工作方式

    第1课

    public class MyFirstClassTest {
    
    @Test(priority = 2)
    public void myFirstClassTestOne(){
        System.out.println("myFirstClassTestOne");
    }
    
    @Test (priority = 2)
    public void myFirstClassTestTwo(){
        System.out.println("myFirstClassTestTwo");
    }
    
    }
    

    第2课

    public class MySecondClassTest {
    
    
    @Test(priority=1)
    public void mySecondClassTestTwo(){
        System.out.println("mySecondClassTestTwo");
    }
    
    }
    

    <强> Testing.xml

    <suite name="Suite1" verbose="1" thread-count="2" >
    
    <test name="parallel-running-test" >
    
        <classes>
            <class name="test.abc.MyFirstClassTest"/>
            <class name="test.abc.MySecondClassTest"/>
        </classes>
    </test>
    </suite>
    

    结果

    enter image description here

答案 1 :(得分:0)

在你的testng.xml中你必须定义:

<groups>
    <dependencies>
      <group name="a" />
      <group name="b" depends-on="a" />
      <group name="c" depends-on="a b" />
    </dependencies>
  </groups>

注释您的测试类如下:

@Test(groups = {"a"})
public class LoginResigterComponents

@Test(groups = {"b"})
public class Register

@Test(groups = {"c"})
public class Login

或者,您只能使用注释设置依赖项:

@Test(groups = {"a"})
    public class LoginResigterComponents

    @Test(groups = {"b"}, dependsOnGroups = {"a"})
    public class Register

    @Test(groups = {"c"}, dependsOnGroups = {"a b"})
    public class Login

<强>更新

或者尝试添加preserve-order属性:

<test name="Smoke Testcases" preserve-order="true">