testng.xml 中的测试用例分组未按预期工作

Grouping of the test cases is not working as expected in testng.xml

我在测试套件中 运行 有多个测试用例。并且还实施了分组。 我的 testng.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="test">
<groups>
<run>
<include name="admin"/>
<include name="grneraluser"/>
</run>
</groups>
<classes>
<class name="TestCases.testclass1" />
<class name="TestCases.testclass2" />
</classes>
</test>
</suite>

TestCases.testclass1 is as below ::

@BeforeSuite(alwaysrun="true")
public void setup(){
...
}

@BeforeClass(groups={"admin"})
public void driversetup(){
....
}

@Test(groups={"admin"},priority=0)
public void login(){
....
}

@Test(groups={"admin"},priority=1)
public void dashboard(){
....
}
@Test(groups={"admin"},priority=2)
public void login1(){
....
}

@Test(groups={"admin"},priority=3)
public void dashboard1(){
....
}
-------------

TestCases.testclass2 is as below ::

@BeforeClass(groups={"grneraluser"})
public void driversetup(){
....
}

@Test(groups={"grneraluser"},priority=1)
public void forcash(){
....
}

@Test(groups={"grneraluser"},priority=2)
public void transact(){
....
}

当测试套件 运行 到 testng.xml 时,而不是 运行 宁所有属于单个组的测试方法。他们 运行 优先级来自多个 类。

我想要执行顺序为

@beforesuite 
@beforeclass - (of TestCases.testclass1, group={"admin"} ) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=0) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=1) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=2) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=3) 
@beforeclass - (of TestCases.testclass1, group={"generaluser"} ) 
@Test - (of TestCases.testclass2 , groups={"admin"},priority=1) 
@Test - (of TestCases.testclass2 , groups={"admin"},priority=2)

但是,它 运行 是:

@beforesuite 
@beforeclass - (of TestCases.testclass1, group={"admin"} ) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=0) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=1) 
@beforeclass - (of TestCases.testclass1, group={"generaluser"})  
@Test - (of TestCases.testclass2 , groups={"generaluser"},priority=1)  
@Test - (of TestCases.testclass1 , groups={"admin"},priority=2)  
@Test - (of TestCases.testclass2 , groups={"generaluser"},priority=2) 
@Test - (of TestCases.testclass1 , groups={"admin"},priority=3)

如有遗漏请提出建议

请更新您的 testng.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="test" group-by-instances="true">
<groups>
<run>
<include name="admin"/>
<include name="grneraluser"/>
</run>
</groups>
<classes>
<class name="TestCases.testclass1" />
<class name="TestCases.testclass2" />
</classes>
</test>
</suite>

我在这里添加了 group-by-instances 属性,用于按 classes 对测试进行分组。

在执行过程中,testNG 会考虑所有测试方法的优先级,并且由于您的两个测试 class 具有优先级 = 1 的测试方法,所以它们都按顺序触发,然后是优先级 = 2 的测试。