《手把手教你》系列基础篇(七十四)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 上篇(详解教程)
1.简介
上一篇文章中宏哥简单的讲解了一下通过xml文件传递参数,这一篇宏哥讲解通过通过@DataProvider传递参数,也就是我们常说的数据驱动测试。如何利用TestNG实现DDT(数据驱动测试 Data Driver Test),什么是数据驱动测试呢?且听宏哥娓娓道来。
2.什么是数据驱动测试?
数据驱动测试是指使用相同的测试用例,但是每次都使用不同的测试数据,进行的一种测试。这些测试数据,通常来自于外部,如.csv文件,.xsl文件,文本文件,或者来自数据库。数据驱动测试是一种最常见的自动化测试技术,用于在许多不同的输入中验证应用程序。从它的定义来看,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用。
3.为什么需要数据驱动测试?
数据驱动测试是一种在软件测试过程中使用的方法,用于描述直接测试的输入、可验证输出的条件表,以及测试环境的设置还有控制编码的过程。
4.数据驱动测试的好处包括:
1.就算应用程序开发还在进行当中,测试者仍然可以进行脚本的编写工作。
2.减少了冗余和不必要的测试脚本。
3.用较少的代码生成测试脚本。
4.所有信息,如输入、输出和预期结果,都以适当的文本记录形式进行存储。
5.为应用程序的维护提供利了灵活性条件。
6.如果功能发生了变化,只需要调整特定的函数脚本就足够了。
5.项目实战1
@DataProvider
示例,传递一个int
参数。5.1代码设计
5.2参考代码
package lessons; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * @author 北京-宏哥 * * @公众号:北京宏哥 * * 《手把手教你》系列基础篇(七十四)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT(详解教程) * * 2022年2月28日 */ public class TestDataProvider { @Test(dataProvider = "provideNumbers") public void test(int number, int expected) { Assert.assertEquals(number + 10, expected); } @DataProvider(name = "provideNumbers") public Object[][] provideData() { return new Object[][] { { 10, 20 }, { 100, 110 }, { 200, 210 } }; } }
5.3运行代码
1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:
6.项目实战2
1.@DataProvider
支持传递一个对象参数。 下面的例子显示了如何传递一个Map对象作为参数。6.1代码设计
1.创建一个名称为:db.properties 的文件,放在项目src目录下, 如下图所示 :
2.创建一个名称为:TestDDT.java 的文件, 其代码如下图所示 :
6.2参考代码
package library; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * @author 北京-宏哥 * * @公众号:北京宏哥 * * 《手把手教你》系列基础篇(七十四)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 上篇(详解教程) * * 2022年2月21日 */ public class TestDDT { @Test(dataProvider = "dbconfig") public void testConnection(Map<String, String> map) { for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("[Key] : " + entry.getKey() + " [Value] : " + entry.getValue()); } } @DataProvider(name = "dbconfig") public Object[][] provideDbConfig() { Map<String, String> map = readDbConfig(); return new Object[][] { { map } }; } public Map<String, String> readDbConfig() { Properties prop = new Properties(); InputStream input = null; Map<String, String> map = new HashMap<String, String>(); try { input = getClass().getClassLoader().getResourceAsStream("db.properties"); prop.load(input); map.put("jdbc.driver", prop.getProperty("jdbc.driver")); map.put("jdbc.url", prop.getProperty("jdbc.url")); map.put("jdbc.username", prop.getProperty("jdbc.username")); map.put("jdbc.password", prop.getProperty("jdbc.password")); } catch (Exception e) { e.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } return map; } }
6.3运行代码
1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:
7.小结
好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
公众号(关注宏哥)                                                                                 客服微信