我的问题更多地与结构/清洁有关。我在TestNG中有一个测试脚本,我希望添加测试用例以进行扩展。我想知道是否有一种简洁的方法来重复测试用例。示例:
我能做到:
@Test(priority=0, name = login )
//some code
@Test(priority=2, name = submit )
//some code
@Test(priority=3, name = accept )
这只是一个测试场景。现在我想对不同的流做同样的事情,但测试用例重复......例如:
@Test(priority=0, name = login )
//some code
@Test(priority=2, name = submit )
//some code
@Test(priority=3, name = rejected )
在两个流程中,2个测试与我重复登录和提交的情况相同。流量的唯一变化就是每次提交后发生的事情,例如提交,拒绝,取消等等。我只知道一种方式,那就是重复写入登录并每次提交。
问题是,是否有更好/更清晰的更有条理的方式来写这个而不是下面我每次都重复登录?
@Test(priority=0, name = login )
//some code
@Test(priority=2, name = submit )
//some code
@Test(priority=3, name = accept )
//Some code
@Test(priority=4, name = login )
//some code
@Test(priority=5, name = submit )
//some code
@Test(priority=6, name = rejected )
//some code
.
.
.
@Test(priority=n ...
答案 0 :(得分:1)
如果您的目标是删除重复的测试,那么如何在testng.xml file中指定,那么如何创建更多的生成的测试并多次运行它们?
例如,你可以这样做:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Test Suite 1">
<test name="Test Set 1">
<classes>
<class name="test.mytest.Test1" />
<class name="test.mytest.Test2" />
</classes>
</test>
<test name="Test Set 2">
<classes>
<class name="test.mytest.Test1" />
<class name="test.mytest.Test3" />
</classes>
</test>
</suite>
将您的课程设置为:
public class Test1 {
@BeforeMethod
public void before(){
System.out.println("==Before method==");
}
@Test
public void testLogin(){
System.out.println("test login");
}
@Test
public void testSubmit(){
System.out.println("test submit");
}
}
public class Test2 {
@Test
public void testAccept(){
System.out.println("test accept");
}
}
public class Test3 {
@Test
public void testReject(){
System.out.println("test reject");
}
}
运行时(我在我的例子中使用了Maven),将产生:
Running TestSuite
==Before method==
test login
==Before method==
test submit
test accept
==Before method==
test login
==Before method==
test submit
test reject
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.253 sec - in TestSuite
对于这个例子,我按类组织它们,但你可以按组,方法等组织。
修改强> 根据您的评论,我添加了一个使用@BeforeMethod和生成的输出的示例。
如果您希望专门重用@BeforeMethod,我想您可以随时将其放入基类并让测试用例扩展它:
public class TestBase {
@BeforeMethod
public void before(){
System.out.println("==Before method==");
}
}
public class Test1 extends TestBase{
@Test
public void testLogin(){
System.out.println("test login");
}
@Test
public void testSubmit(){
System.out.println("test submit");
}
}
我从来不需要做那样的事情,所以我不能在最佳实践方面谈论它,但它会起作用。
答案 1 :(得分:0)
这会有用吗?
public class BeforeStuff {
@BeforeMethod()
}
public class Test1 {
@Test
@Test
}
public class Test2 {
@Test
}
public class Test3 {
@Test
}
}