我的问题更多地与结构/清洁有关。我在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 )在这两个流程中,两个测试是相同的,我重复登录和提交。唯一的变化就是每次提交后会发生什么变化,比如提交、拒绝、取消等等。我只知道一种方法,那就是重复写登录,每次提交。
的问题是,是否有更好/更简洁、更结构化的方式来编写这个,而不是每次我都重复登录的下面呢?
@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 ... 发布于 2015-11-10 18:04:54
如果您的目标是删除测试的重复,那么如何通过在testng.xml文件中指定这些测试来创建更多的非虚拟化测试并多次运行它们?
例如,您可以:
<?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");
}
}我从来不需要做这样的事情,所以我不能从最佳实践的角度和它说话,但它会奏效的。
发布于 2015-11-10 18:56:06
这个能行吗?
public class BeforeStuff {
@BeforeMethod()
}
public class Test1 {
@Test
@Test
}
public class Test2 {
@Test
}
public class Test3 {
@Test
}
}https://stackoverflow.com/questions/33636071
复制相似问题