Selenium webdriver 如何计划testng.xml文件中类的执行?

Selenium webdriver 如何计划testng.xml文件中类的执行?,selenium-webdriver,testng,Selenium Webdriver,Testng,在一个包中,我有多个类。但是如何在testng中一个接一个地调度类的执行。 我的testng.xml文件 <?xml version="1.0" encoding="UTF-8"?> <suite name="AutomationTestWrangler"> <test name="Smoke Testcases"> <classes> <class name="DataWrangler.LoginResigterC

在一个包中,我有多个类。但是如何在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>
如何制定执行时间表

DataWrangler.LoginResigterComponents
DataWrangler.Register
DataWrangler.Login

在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"}, dependsOnGroups = {"a"})
    public class Register

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

或者尝试添加
preserve order
属性:

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

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

我这里没有什么指导方针-

  • 如果您的需求是使用
    xml
    执行一组类,那么您的类中测试方法的依赖性就更好了
  • 在测试方法中仔细使用
    优先级
    。如果您为不同类的两个不同测试方法分配了相同的优先级,并使用
    xml
    文件执行代码,那么无论您在
    xml
    文件中维护的顺序如何,第一优先级测试方法都将首先执行
  • 您可以尝试的另一个替代解决方案是在
    xml
    文件的
    标记中添加
    groupbyinstances=“true”

    e、 g.-

    <test name="parallel-running-test" group-by-instances="true">
    
    第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>
    
    
    
    结果


    通过使用“@Test(groups={“a”})公共类LoginResigterComponents@Test(groups={“b”},dependsOnGroups={“a”})公共类Register@Test(groups={“c”},dependsOnGroups={“ab”})公共类Login”这种技术,如果任何测试用例在前一个类中失败,下一个类将不会执行。和“”不起作用。请将此@Test(groups={“c”},alwaysRun=“true”)添加到您的注释中。我不会得到此100%@Maciej-alwaysRun=true是否违背了组的用途?@xris Stoixeia,感谢您的回复。你确定priority不能做这种事吗。我正在更新我的问题,看看Hi Sidhartha,你的xml没有问题!你确定执行是按照你提议的顺序进行的吗?
    public class MyFirstClassTest {
    
    @Test(priority = 2)
    public void myFirstClassTestOne(){
        System.out.println("myFirstClassTestOne");
    }
    
    @Test (priority = 2)
    public void myFirstClassTestTwo(){
        System.out.println("myFirstClassTestTwo");
    }
    
    }
    
    public class MySecondClassTest {
    
    
    @Test(priority=1)
    public void mySecondClassTestTwo(){
        System.out.println("mySecondClassTestTwo");
    }
    
    }
    
    <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>