Testng测试框架(3)-数据驱动TestNG@DataProvider

TestNG 是一个强大的 Java 测试框架,它提供了许多高级功能,如参数化测试、依赖注入、分组等。其中,@DataProvider 是 TestNG 中一个非常有用的注解,用于为测试方法提供数据。

@DataProvider 的作用

使用 @DataProvider 注解的方法可以为测试方法提供多组数据。这样,你就可以用同一组测试逻辑来测试不同的输入数据。

如何使用 @DataProvider

  1. 创建 @DataProvider 方法

这个方法应该返回一个 Object[][] 数组,其中每个内部数组代表一组测试数据。

@DataProvider(name = "testData")
public Object[][] createData() {return new Object[][] {{"input1", "expectedOutput1"},{"input2", "expectedOutput2"},// ... 更多数据};
}
  1. 在测试方法中使用 @TestdataProvider 属性

在测试方法上,使用 dataProvider 属性来指定要使用的数据提供器的名称。

@Test(dataProvider = "testData")
public void testMethod(String input, String expectedOutput) {// ... 测试逻辑// 使用 input 作为输入,并验证输出是否与 expectedOutput 匹配
}

注意事项

  • @DataProvider 方法可以是静态的或非静态的。
  • 如果 @DataProvider 方法返回 null 或空数组,则不会运行任何测试。
  • 如果 @Test 方法需要特定数量的参数,则 @DataProvider 返回的每个数组也必须有相同数量的元素。

示例

下面是一个简单的示例,展示如何使用 @DataProvider

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;public class MyTest {@DataProvider(name = "addNumbers")public Object[][] createData() {return new Object[][] {{2, 3, 5},{5, 7, 12},{-1, 1, 0}};}@Test(dataProvider = "addNumbers")public void testAdd(int a, int b, int expectedSum) {int actualSum = a + b;assert actualSum == expectedSum;}
}

示例登录场景

在这个示例中,createData 方法为 testAdd 方法提供了三组数据。testAdd 方法会对每组数据进行加法运算,并验证结果是否与预期一致。
举一个登录的场景,每种不同的输入都对应了不同的提示。

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;public class LoginTest {@Test(dataProvider = "data")public void testLogin(String username, String password,String prompt) {System.out.println("如果输入" + username + " password:" + password + " 提示:" + prompt);}@DataProvider(name = "data")public Object[][] dataProvider1() {return new Object[][]{{"admin", "123456", "登录成功"},{"admin", "1234567", "密码错误"},{"admin1", "123456", "用户名不存在"},{"admin", "123456", "登录成功"},{"admin", "123456", "登录成功"},{"admin", "123456", "登录成功"},{"admin", "123456", "登录成功"}};}
}

在这里插入图片描述
该函数是一个Java方法,用于提供测试数据。它使用了@Test注解,并指定了dataProvider的name为daa。这意味着在使用该测试数据时,需要在@Test注解中指定name为data。该方法返回一个Object二维数组,其中每个子数组代表一组测试数据,每个子数组的第一个元素是用户名,第二个元素是密码,第三个元素是预期结果。该函数提供了七组测试数据,包括了不同的用户名、密码和预期结果的情况

import org.testng.annotations.*;public class DataProviderExampleTest {@Test(dataProvider = "data")public void testLogin(String username, String password,String prompt) {System.out.println("如果输入" + username + " password:" + password + " 提示:" + prompt);}@DataProvider(name = "data")public Object[][] dataProvider1() {return new Object[][]{new Object[] {"admin", "123456", "登录成功"},new Object[]  {"admin", "1234567", "密码错误"},new Object[]  {"admin1", "123456", "用户名不存在"}};}}

在这里插入图片描述

并行运行

parallel如果设置为true,则使用此数据访问接口生成的测试将并行运行,默认值为false。

 @DataProvider(name = "data",parallel = true)public Object[][] dataProvider1() {return new Object[][]{new Object[] {"admin", "123456", "登录成功"},new Object[]  {"admin", "1234567", "密码错误"},new Object[]  {"admin1", "123456", "用户名不存在"}};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java数据结构与算法刷题-----LeetCode260. 只出现一次的数字 III

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 与运算取末尾1分组 与运算取末尾1分组 解题思路:时间…

文献速递:深度学习肝脏肿瘤诊断---基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习

Title 题目 Deep learning for diferential diagnosisof malignant hepatic tumors based on multi-phase contrast-enhanced CT and clinical data 基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习 Abstract 摘要 Liver cancer remains the leading cause of can…

计算机网络——TCP和UDP协议

目录 前言 前篇 引言 TCP与UDP之间的区别 TCP 三次握手 为什么要三次握手而不是两次握手? 丢包问题与乱序问题的解决 四次挥手 为什么客户端需要等待超时时间? UDP协议 TCP和UDP的主要区别 前言 本博客是博主用于复习计算机网络的博客&…

软件开发安全备受重视,浙江某运营商引入CWASP认证课程,

​浙江省某大型运营商是一家实力雄厚、服务优质的通信运营商,致力于为全省用户提供优质、高效的通信服务。数字时代,该运营商顺应信息能量融合发展趋势,系统打造以5G、算力网络、能力中台为重点的新型信息基础设施,夯实产业转型升…

Redis入门到通关之五大基本数据类型及其使用场景

文章目录 一 什么是NoSQL?二 Redis是什么?三 Redis五大基本类型1 String(字符串)应用场景 2 List(列表)应用场景 3 Set(集合)4 sorted set(有序集合)应用场景…

代码随想录阅读笔记-回溯【组合总和II】

题目 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组…

VBA中如何对工作表进行排序

代码 在VBA中对工作表进行排序的最简单方法是直接使用Move方法来移动工作表。 Sub SortSheetsByNameDescending()Dim sheetsDim sheet As WorksheetDim i As Integer, j As IntegerDim sortedSheets() As Array 获取当前工作簿中的所有工作表Set sheets ThisWorkbook.Sheets…

MySQL索引、B+树相关知识汇总

MySQL索引、B树相关知识汇总 一、有一个查询需求,MySQL中有两个表,一个表1000W数据,另一个表只有几千数据,要做一个关联查询,如何优化?1、为关联字段建立索引二、小表驱动大表 二、b树和b树的区别1、更高的…

什么是NLP?

🤖NLP是什么?🤖 NLP(Natural Language Processing),全称自然语言处理,是人工智能不可或缺的一环,它搭建了人与计算机之间沟通的桥梁🌉。 🛠️NLP强大功能一…

高校实习管理系统的设计与实现(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统高校实习管理系统信息管理难度大,容错率低&am…

给Parallels Desktop虚拟机下的Linux磁盘扩容

本文是以Ubuntu为例演示,涉及到的命令在centos里也同样适用 一、扩容前查看磁盘容量 二、开始扩容操作 第一步:打开PD分配更大的磁盘空间,要保证有足够大的扩容空间 我的pd里给ubuntu分配了64G的磁盘空间,所以我大概还能扩容34G…

linux学习:标准IO

目录 接口 打开文件 关闭文件 读写 每次一个字符的读写标准 IO 函数接口 每次一行的读写标准 IO 函数接口 每次读写若干数据块的标准 IO 函数接口 获取或设置文件当前位置偏移量 标准格式化 IO 函数 系统 IO 的最大特点一个是更具通用性,不管是普通文件、管…

web笔记再整理

前四天笔记在此连接: web前端笔记表单练习题五彩导航栏练习题-CSDN博客https://blog.csdn.net/simply_happy/article/details/136917265?spm1001.2014.3001.5502 # 1.边框弧度​ div {​ width: 300px;​ height: 50px;​ background-color: aqua;​ …

【刷题】图论——最小生成树:Prim、Kruskal【模板】

假设有n个点m条边。 Prim适用于邻接矩阵存的稠密图,时间复杂度是 O ( n 2 ) O(n^2) O(n2),可用堆优化成 O ( n l o g n ) O(nlogn) O(nlogn)。 Kruskal适用于稀疏图,n个点m条边,时间复杂度是 m l o g ( m ) mlog(m) mlog(m)。 Pr…

基于单片机的智能模拟路灯控制系统

摘 要: 随着电力资源的紧缺,以及光污染和雾霾天气的影响,更智能化的路灯设计对人们的日常生活意义重大。本文的智能路灯控制系统是基于单片机的控制器,通过介绍该系统相应的硬件设计和软件设计,实现定时开关和依具体情况是否需要来开关路灯和进行亮度调节,并且具有自检功能…

Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

谷歌现在被授权在云端托管机密数据

谷歌公共部门在周二为其美国政府客户实现了一个重要里程碑,宣布国防部授权其云平台托管秘密和绝密机密数据。 这项认证立即使谷歌的云产品与竞争对手亚马逊网络服务、 微软和甲骨文相比更具竞争力,因为它们在国防部和情报机构内争夺价值数十亿美元的业…

opencv 多线程读取和显示摄像头【python源码】

在Python中,使用OpenCV库实现多线程读取和显示摄像头通常涉及创建多个线程,每个线程负责从摄像头捕获视频帧并显示它们。但是,请注意,OpenCV本身并不直接支持多线程显示,因为cv2.imshow通常是在主线程中运行的。然而&a…

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里,选中数据,设置对齐方式 左右居中,然而,数字却怎么都不居中,为什么呢? 1.按快捷键Ctrl1,打开单元格自定义格式对话框,看到是初始界面是在数字的会计专用,…

蓝桥杯python速成

总写C,脑子一热,报了个Python(有一点想锤死自己),临时抱佛脚了 1.list的插入删除 append extend insert(在索引位插入99)---忘记用法别慌,用help查询 remove(去掉第一个3…