《手把手教你》系列基础篇(七十四)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 上篇(详解教程)

简介: 【6月更文挑战第15天】本文介绍了TestNG的数据驱动测试(Data Driven Testing, DDT)概念和好处,并提供了两个实战示例。数据驱动测试允许使用不同的测试数据执行相同的测试用例,这些数据可以从外部文件或数据库获取。这种方法提高了测试效率,减少了冗余代码,并便于应对应用程序变更。

1.简介

  上一篇文章中宏哥简单的讲解了一下通过xml文件传递参数,这一篇宏哥讲解通过通过@DataProvider传递参数,也就是我们常说的数据驱动测试。如何利用TestNG实现DDT(数据驱动测试 Data Driver Test),什么是数据驱动测试呢?且听宏哥娓娓道来。

2.什么是数据驱动测试?

数据驱动测试是指使用相同的测试用例,但是每次都使用不同的测试数据,进行的一种测试。这些测试数据,通常来自于外部,如.csv文件,.xsl文件,文本文件,或者来自数据库。数据驱动测试是一种最常见的自动化测试技术,用于在许多不同的输入中验证应用程序。从它的定义来看,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用。

3.为什么需要数据驱动测试?

数据驱动测试是一种在软件测试过程中使用的方法,用于描述直接测试的输入、可验证输出的条件表,以及测试环境的设置还有控制编码的过程。

4.数据驱动测试的好处包括:

1.就算应用程序开发还在进行当中,测试者仍然可以进行脚本的编写工作。

2.减少了冗余和不必要的测试脚本。

3.用较少的代码生成测试脚本。

4.所有信息,如输入、输出和预期结果,都以适当的文本记录形式进行存储。

5.为应用程序的维护提供利了灵活性条件。

6.如果功能发生了变化,只需要调整特定的函数脚本就足够了。

5.项目实战1

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 map) {


       for (Map.Entry entry : map.entrySet()) {

           System.out.println("[Key] : " + entry.getKey() + " [Value] : " + entry.getValue());

       }


   }


   @DataProvider(name = "dbconfig")

   public Object[][] provideDbConfig() {

       Map map = readDbConfig();

       return new Object[][] { { map } };

   }


   public Map readDbConfig() {


       Properties prop = new Properties();

       InputStream input = null;

       Map map = new HashMap();


       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.小结

 好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!


每天学习一点,今后必成大神-


往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
3天前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
13 2
|
4天前
|
Web App开发 XML Java
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
【7月更文挑战第14天】这篇教程介绍了如何使用Java和Selenium构建一个支持跨浏览器测试的自动化测试框架。设计的核心是通过读取配置文件来切换不同浏览器执行测试用例。配置文件中定义了浏览器类型(如Firefox、Chrome)和测试服务器的URL。代码包括一个`BrowserEngine`类,它初始化配置数据,根据配置启动指定的浏览器,并提供关闭浏览器的方法。测试脚本`TestLaunchBrowser`使用`BrowserEngine`来启动浏览器并执行测试。整个框架允许在不同浏览器上运行相同的测试,以确保兼容性和一致性。
15 3
|
6天前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
22 5
|
7天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
【7月更文挑战第12天】在本文中,作者宏哥介绍了如何在不使用PageFactory的情况下,用Java和Selenium实现Page Object Model (POM)。文章通过一个百度首页登录的实战例子来说明。首先,创建了一个名为`BaiduHomePage1`的页面对象类,其中包含了页面元素的定位和相关操作方法。接着,创建了测试类`TestWithPOM1`,在测试类中初始化WebDriver,设置驱动路径,最大化窗口,并调用页面对象类的方法进行登录操作。这样,测试脚本保持简洁,遵循了POM模式的高可读性和可维护性原则。
13 2
|
8天前
|
设计模式 Java 测试技术
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
【7月更文挑战第11天】页面对象模型(POM)通过Page Factory在Java Selenium测试中被应用,简化了代码维护。在POM中,每个网页对应一个Page Class,其中包含页面元素和相关操作。对比之下,非POM实现直接在测试脚本中处理元素定位和交互,代码可读性和可维护性较低。
|
29天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
43 4
|
9天前
|
设计模式 测试技术 Python
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
【7月更文挑战第10天】Page Object Model (POM)是Selenium自动化测试中的设计模式,用于提高代码的可读性和维护性。POM将每个页面表示为一个类,封装元素定位和交互操作,使得测试脚本与页面元素分离。当页面元素改变时,只需更新对应页面类,减少了脚本的重复工作和维护复杂度,有利于团队协作。POM通过创建页面对象,管理页面元素集合,将业务逻辑与元素定位解耦合,增强了代码的复用性。示例展示了不使用POM时,脚本直接混杂了元素定位和业务逻辑,而POM则能解决这一问题。
25 6
|
11天前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)
【7月更文挑战第9天】在Java项目中,使用Logback配置可以实现日志按照不同包名输出到不同的文件,并且根据日志级别分开记录。
26 4
|
12天前
|
XML Java 测试技术
《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
【7月更文挑战第8天】这篇教程介绍了如何使用Logback将Java应用的日志输出到文件中。首先,通过创建`logback.xml`配置文件,设置`FileAppender`来指定日志文件路径和格式。然后,提供了一个`RollingFileAppender`的例子,用于每日生成新的日志文件并保留一定天数的历史记录。文中包含配置文件的XML代码示例,并展示了控制台输出和生成的日志文件内容。教程最后提到了一些可能遇到的问题及解决建议。
17 0
《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
|
17天前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
【7月更文挑战第3天】TestNG教程展示了如何自定义日志记录。首先创建一个名为`TestLog`的测试类,包含3个测试方法,其中一个故意失败以展示日志。使用`Assert.assertTrue`和`Reporter.log`来记录信息。接着创建`CustomReporter`类,继承`TestListenerAdapter`,覆盖`onTestFailure`, `onTestSkipped`, 和 `onTestSuccess`,在这些方法中自定义日志输出。
30 6