testng接口自动化测试_TestNG:在一个测试类中使用@DataProvider依次运行测试

testng接口自动化测试

testng接口自动化测试

许多Java开发人员和自动化测试工程师在他们的工作中都使用TestNG作为测试框架。 我也不例外。 这是一个显而易见的选择,因为TestNG提供了非常强大的工具集,这使处理各种测试变得更加容易。 为了证明这一点,我将在本文中向您展示如何解决一项不平凡的任务。

问题

如何使用不同的数据集以特定顺序在单个类中运行测试? 好吧,好像我用一句话就暴露了这个问题。 但是,如果您要我以更严格的形式提出这句话,我将提供以下列表:

  • 多种测试方法
  • 一门考试
  • 序列运行
  • 每种测试方法都有不同的数据集

这里总结一下是该问题的抽象模式:

TestClass {
firstTest(String testData)
secondTest(String testData)
thirdTest(String testData)
}

TestDataSets {
“string 1″
“string 2″
}

运行这些测试应得出以下结果:

firstTest(string 1)
secondTest(string 1)
thirdTest(string 1)

firstTest(string 2)
secondTest(string 2)
thirdTest(string 2)

在突出显示并解释了问题之后,我们可以继续解决问题。

TestNG的实现

我将使用最简化的代码构造,但是您可以使用这种方法通过一些特定的逻辑对其进行自定义。

package kill.me.later;

import static org.testng.Assert.assertTrue;

import org.testng.annotations.Test;

public class SomeTest {

	private int id = 0;
	private String account = "";

	public SomeTest(int id, String account) {
		this.id = id;
		this.account = account;
	}

	@Test
	public void firstTest() {
		System.out.println("Test #1 with data: "+id+". "+account);
		assertTrue(true);
	}

	@Test
	public void secondTest() {
		System.out.println("Test #2 with data: "+id+". "+account);
		assertTrue(true);
	}

	@Test
	public void thirdTest() {
		System.out.println("Test #3 with data: "+id+". "+account);
		assertTrue(true);
	}

}

检查上面的代码,每个人都可以注意到我使用了常规的TestNG @Test批注应用于void方法。 我也声明了一个构造函数,但是其目的将在后面讨论。 TestNG具有非常有用的注释– @Factory@DataProvider 。 我建议在官方TestNG文档站点上阅读有关它们的信息。 在阅读这些注释时,我将继续进行实际操作:

package kill.me.later;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;

public class SampleFactory {

	@Factory(dataProvider="dp")
	public Object[] createInstances(int id, String account) {
		return new Object[] {new SomeTest(id, account)};
	}

	@DataProvider(name="dp")
	public static Object[][] dataProvider() {
		Object[][] dataArray = {
				{1, "user1"},
				{2, "user2"}
		};
		return dataArray;
	}

}

最后一个代码片段提供了SomeTest类中每个测试方法的运行,并在dataProvider中声明了数据集。 但是,如果尝试在TestNG的帮助下运行SampleFactory类,则不会从“问题”部分中获得测试方法的执行顺序。 为了实现顺序执行测试方法的顺序,您需要使用TestNG XML启动器:

< !DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

请注意group-by-instances参数。 确实,它为测试方法的执行提供了非常理想的顺序。 因此,现在您可以轻松地组织此类DDT运行的测试。

翻译自: https://www.javacodegeeks.com/2014/01/testng-run-tests-sequentially-with-dataprovider-inside-one-test-class.html

testng接口自动化测试

TestNG一个基于Java测试框架,它支持测试驱动开发(TDD)和行为驱动开发(BDD)的测试方法。TestNG提供了丰富的功能,例如测试套件、测试用例、测试方法、测试参数、测试依赖、测试分组、断言、数据提供者等。使用TestNG可以轻松地编写和运行接口自动化测试。 以下是使用TestNG进行接口自动化测试的步骤: 1. 安装TestNG插件:在Eclipse或IntelliJ IDEA中安装TestNG插件,以便创建和执行测试。 2. 创建测试类:创建一个Java类,并用@Test注解来标记测试方法。例如: ``` import org.testng.annotations.Test; public class MyTest { @Test public void testGet() { // 编写测试代码 } } ``` 3. 运行测试使用TestNG插件在Eclipse或IntelliJ IDEA中运行测试。 4. 添加断言:在测试方法中添加断言,验证测试结果是否符合预期。例如: ``` import org.testng.Assert; import org.testng.annotations.Test; public class MyTest { @Test public void testGet() { // 编写测试代码 String response = api.get(url); Assert.assertEquals(response, expectedResponse); } } ``` 5. 添加数据提供者:使用@DataProvider注解来提供测试数据,让测试方法可以使用不同的数据进行测试。例如: ``` import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class MyTest { @DataProvider(name = "testData") public Object[][] testData() { return new Object[][] { {"param1", "expected1"}, {"param2", "expected2"} }; } @Test(dataProvider = "testData") public void testGet(String param, String expected) { // 编写测试代码,使用param和expected进行测试 String response = api.get(url + param); Assert.assertEquals(response, expected); } } ``` 6. 添加测试依赖:使用@DependsOnMethods注解来指定测试方法之间的依赖关系,使得测试方法按照特定的顺序执行。例如: ``` import org.testng.annotations.Test; public class MyTest { @Test public void testLogin() { // 编写测试代码,登录系统 } @Test(dependsOnMethods = "testLogin") public void testGetUserInfo() { // 编写测试代码,获取用户信息 } } ``` 7. 运行测试套件:使用testng.xml文件来配置和运行测试套件,包括指定测试类、测试方法、测试参数、测试报告等。例如: ``` <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="My Test Suite"> <test name="My Test"> <classes> <class name="com.example.MyTest"/> </classes> </test> </suite> ``` 以上是使用TestNG进行接口自动化测试的基本步骤,具体的测试场景和测试代码需要根据具体的项目需求进行编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值