TestNG:在一个测试类中使用@DataProvider依次运行测试

许多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;}@Testpublic void firstTest() {System.out.println("Test #1 with data: "+id+". "+account);assertTrue(true);}@Testpublic void secondTest() {System.out.println("Test #2 with data: "+id+". "+account);assertTrue(true);}@Testpublic 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运行的测试。

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

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

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

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

相关文章

mysql 数据库读取_教你如何从 MySQL 数据库读取数据

PHP MySQL 读取数据从 MySQL 数据库读取数据SELECT 语句用于从数据表中读取数据:SELECT column_name(s) FROM table_name我们可以使用 * 号来读取所有数据表中的字段&#xff1a;SELECT * FROM table_name如需学习更多关于 SQL 的知识&#xff0c;请访问我们的 SQL 教程。使用 …

GXC 钱包部署

参考: [ 官方 wiki ] 基于 Ubuntu 的 GXC 部署 基础环境 OS: Ubuntugxc: 官方 [ release 最新版本 ]下载 release 包(ubuntu) cd /usr/src wget https://github.com/gxchain/gxb-core/releases/download/v1.0.181106b/gxb_ubuntu_1.0.1801106.tar.gz 拷贝可执行命令到系统 /usr…

js-js的全局变量和局部变量

*** 全局变量&#xff1a;在script标签里面定义一个变量&#xff0c;这个变量在页面中js部分都可以使用   - 在方法外部使用&#xff0c;在方法内部使用&#xff0c;在另外一个script标签中使用 *** 局部变量&#xff1a;在方法内部定义一个变量&#xff0c;只能在方法内部调…

使用Lucene的新FreeTextSuggester查找长尾建议

Lucene的“ 建议”模块提供了许多有趣的自动建议实现&#xff0c;以便在用户将每个字符输入搜索框时为他们提供实时搜索建议。 例如&#xff0c; WFSTCompletionLookup将所有建议及其权重编译到一个紧凑的有限状态传感器中 &#xff0c;从而可以对基本建议进行快速前缀查找。 …

Java属性中指定Json的属性名称(序列化和反序列化)

序列化对象&#xff0c;只需要使用注解"JsonProperty(value "pwd")" import com.fasterxml.jackson.annotation.JsonProperty;public class User{JsonProperty(value "pwd")private String password; } 比如上面例子&#xff0c;在作为请求接…

网站表单输入框去除浏览器默认样式

网页不可避免的使用到表单&#xff0c;提交一些内容到后端&#xff0c;进行前后端交互。可是由于浏览器总是有各自的默认样式&#xff0c;所以需要对其进行清除。总的来说有以下几种&#xff1a; 1、input输入框获取焦点的时候&#xff0c;默认带蓝色边框&#xff0c;如果设计要…

mysql 查看锁表日志_MYSQL 表锁情况查看

查看锁表情况mysql> show status like ‘Table%’;—————————-——–| Variable_name | Value |—————————-——–| Table_locks_immediate | 795505 || Table_locks_waited | 0 || Table_open_cache_hits | 0 || Table_open_cache_misses | 0 || Table_ope…

js-原始类型和声明变量

** Java的基本数据类型&#xff1a;byte、short、int、long、float、double、char、boolean ** 定义变量 都是用关键字 var(ES6中可以使用const和let来定义变量&#xff0c;后面会有ES6的语法介绍) ** js的原始类型&#xff08;5个&#xff09; - string&#xff1a;字符串  …

Java,Scala,Guava和Trove集合-它们可以容纳多少数据?

关于我们的数据结构&#xff0c;令人着迷的事情之一是&#xff0c;即使我们对它们非常熟悉&#xff0c;我们仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目。 我们可能会在学校&#xff0c;高级开发人员那里学到这一点&#xff0c;或者由于数据结构选择不…

spoj1026 favorite dice

1 #include <bits/stdc.h>2 using namespace std;3 int n,t;4 const int N 1200;5 double dp[N];6 /*7 甩一个n面的骰子&#xff0c;问每一面都被甩到的需要甩的次数期望是多少。8 dp[i]&#xff1a;已经甩到i个面了&#xff0c;要达到n个面还需要次数的期望9 显然dp[…

switch 失效

switch 开关失效无法切换&#xff0c;可以关闭&#xff0c;无法开启。 发现问题点 require-table.js 中toggle value的数据类型不是 number 导致 &#xff08;value ? no : yes )判断总为no&#xff1b; 前面将value 强制转换为number类型即可 转载于:https://www.cnblogs.c…

纯php socket mysql_PHP 连接 unix_socket MySQL

当MySQL使用Unix Socket启动时&#xff0c;直接使用localhost会发生了一个数据库错误&#xff0c;发生无法连接数据库错误。 Warning: mysql_connect() [function.mysql-connect]: [2002] 这时应当修改hostname&#xff0c;例如在CI 配置数据库 (database.php) 从&#xff1a; …

html-其他常见标签的使用

b&#xff1a;加粗 s&#xff1a;删除线 u&#xff1a;下划线 i&#xff1a;斜体 per&#xff1a;原样输出 sup:上标 sub:下标 p&#xff1a;段落标签 比br多一行 &#xff08;CSS&#xff09; div&#xff1a;自动换行 span&#xff1a;在一行显示 完整代码&#xff1a; <h…

在OpenShift上将JMS与JBoss A-MQ结合使用。 从远程客户端和加密中学到的经验教训。...

OpenShift是“红帽开发的开放式混合云应用程序平台”。 它具有不同的风格&#xff0c;对于大多数您想做的事情&#xff0c;最有趣的部分是公共云应用程序开发和托管平台“ OpenShift Online ”。 您可以轻松地尝试一下&#xff0c;因为在云中使用OpenShift Online是免费的&…

[Swift]LeetCode281. 之字形迭代器 $ Zigzag Iterator

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

SpringBoot整合系列-PageHelper分页插件

原创作品&#xff0c;可以转载&#xff0c;但是请标注出处地址&#xff1a;https://www.cnblogs.com/V1haoge/p/9971043.html SpringBoot整合MyBatis分页插件PageHelper 步骤 第一步&#xff1a;首先整合MyBatis 参照之前SpringBoot整合系列-整合MyBatis 第二步&#xff1a;添加…

mysql为什么不能插入数据_mysql为啥不能插入数据

mysql为何不能插入数据&#xff1f;安装AppServ后首次使用mysql&#xff0c;没有图形界面&#xff0c;在“MySql Command Line Client”的操作如下&#xff1a;mysql> create database cars;Query OK, 1 row affected (0.00 sec)mysql> use cars;Database changedmysql&g…

scss-@extend

extend指令用于共享规则和选择器之间的关系。它可以扩展所有其他类的样式在一个类中&#xff0c;也可应用于自己特定的样式。 查看如下scssextend示例&#xff1a; .style{font-size: 30px;font-style: italic; }h2{color: #787878;extend .style} .container{extend h2 } 编译…

JavaSE 7,8:确定特定文件系统支持的视图

如果您对文件或目录有疑问&#xff0c;例如是否隐藏文件&#xff0c;是否为目录&#xff0c;文件的大小以及文件的所有者&#xff0c;则可以从元数据中获得这些问题&#xff08;以及许多其他问题&#xff09;的答案&#xff0c;这是关于其他数据的数据。 NIO.2将元数据的概念与…

mocha 测试 mysql_e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDrive

e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别 &#xff0c; 下面讲一下Node.js中如何访问数据库&#xff0c; 在做自动化测试过程中&#xff0c; 经常可能遇到需要到数据库取值&#xff0c;或是…