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

news/2024/7/24 6:31:24 标签: java, 编程语言, 设计模式, 单元测试, 接口
testng<a class=接口自动化测试" width="403px" height="256px" style="outline: none;" />

testng接口自动化测试

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

问题

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

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

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

java">TestClass {
firstTest(String testData)
secondTest(String testData)
thirdTest(String testData)
}

TestDataSets {
“string 1″
“string 2″
}

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

java">firstTest(string 1)
secondTest(string 1)
thirdTest(string 1)

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

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

TestNG的实现

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

java">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文档站点上阅读有关它们的信息。 在阅读这些注释时,我将继续进行实际操作:

java">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运行的测试。

参考: TestNG:在Fruzenshtein的便笺博客上,在我们的JCG合作伙伴Alexey Zvolinskiy的一个测试类中,使用@DataProvider依次运行测试。

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

testng接口自动化测试


http://www.niftyadmin.cn/n/1707980.html

相关文章

linux中调节init进程的优先级,Init进程设置SELinux的Policy

Init进程的main()函数有一段代码用来初始化SELinux&#xff0c;如下所示&#xff1a;int main(......) {......//设置SELinux的回调函数union selinux_callback cb;cb.func_log klog_write;selinux_set_callback(SELINUX_CB_LOG,cb);cb.func_audit audit_callback;selinux_se…

linux脚本取当前日期格式,PowerShell中使用Get-Date获取日期时间并格式化输出的例子...

在PowerShell中有一个Get-Date的cmdlet&#xff0c;使用它可以直接返回当前的日期和时间。使用-Format参数可以返回当前的年、月、日、时、分、秒等。Get-Date的直接使用在PowerShell中直接调用Get-Date&#xff0c;可以返回当前的日期和时间&#xff0c;包括年、月、日、时、分…

linux网卡绑定拓扑,Linux双网卡绑定实现故障转移实践

由于业务需求&#xff0c;我们的业务已经将所有主机做成集群模式现在需要将主机设备做成高可用状态也就是避免网络设备的单点导致业务的中断。目前网络拓扑如下所示&#xff1a;以上拓扑中在核心交换上做的路由&#xff0c;在接入交换上做的链路聚合。所以在此我们需要将服务器…

Python基础复习笔记01(内置的数据类型的性能)

文章目录1浅谈列表 和 字典2分析其数据类型的性能2.1列表操作的时间复杂度2.2字典操作的时间复杂度&#xff1a;投资的回报通常遵循80/20原则&#xff1a;所得利益的80% 源自最简单系统的20%。大多数软件用80%的时间仅仅完成20%的有效指令。 1浅谈列表 和 字典 列表和字典是Py…

MATLAB科学计算03(微积分与泰勒傅里叶级数)

文章目录1 微积分解析解1.1 单变量函数的极限1.2 多变量函数的极限2 级数2.1 Taylor泰勒 幂级数展开2.2 Fourier傅里叶级数展开2.3 级数求和3 数值微分4 数值积分4.1 梯形法&#xff1a;4.2 单变量数值积分4.3 integral 数值积分4.4 quadgk()函数&#xff08;自适应高斯-勒让德…

Java学习笔记09(构造方法+this关键字+Javabean)

文章目录构造方法关键字this构造器的重载JavaBean构造方法 根据参数不同&#xff0c;构造器可以分为如下两类&#xff1a; 隐式无参构造器&#xff08;系统默认提供&#xff09;显式定义一个或多个构造器&#xff08;无参、有参&#xff09; 构造方法案例代码,还是用person学…

Java学习笔记10(零压力理解继承多态权限修饰符)

文章目录继承方法的重写&#xff08;override&#xff09;四种访问权限修饰符&#xff1a;关键字super类对象的实例化的底层原理多态instanceof操作符object类继承 继承是Java最重要的&#xff0c;类之间有内在联系&#xff0c;子类和父类。子类比父类更 具体&#xff0c;表示…

linux复制文本一行数据库,linux mysql 数据库复制

一、主服务器配置1、配置文件my.cnf的修改[rootlocalhost mysql]# vim /etc/my.cnf#在[mysqld]中添加&#xff1a;server-id1log_binmaster-binlog_bin_indexmaster-bin.indexbinlog_do_dbtest#备注&#xff1a;#server-id 服务器唯一标识。#log_bin 启动MySQL二进制日志&#…