一、当我们的同一个test有多套数据需要进行测试,那么我们就需要用到--》DataProviders

 package testclasses1;

 import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; public class TestNG_DataProviders { /**
* 场景:我们需要使用3组数据对同一个test方法进行测试。
* 解决思路:
* 1、如果我们写3个重复的test。那么就会造成代码冗余,为了提高代码的复用性,我们可以使用testng中的@DataProvider进行数据提供
* 2、首先我们需要写一个可以提高数据的方法,它时一个二维数组类型的,需要返回参数。
* 3、@DataProvider(name="inputs")给该方法加上备注,并命名为“inputs”
* 4、在测试方法testMethod1中引用数据,dataProvider名称必须和提供数据的方法注解名称一致
* */ @DataProvider(name="inputs")
public Object[][] getData(){
return new Object[][] {
{"苹果","红色"},
{"西瓜","绿色"},
{"桔子","黄色"},
};
} @Test(dataProvider="inputs")
public void testMethod1(String input1,String input2) {
System.out.println("Input 1:"+input1);
System.out.println("Input 2:"+input2);
}
}

运行结果:

二、如果我们的一个类中有多个测试方法和提供数据的dataprovider,就会比较混乱,所以我们需要然将提供数据的方法和test类分离。

1、新建一个用于存放测试数据的类

 package testclasses1;

 import org.testng.annotations.DataProvider;

 public class TestData {

     @DataProvider(name="inputs")
public Object[][] getData(){
return new Object[][] {
{"苹果","红色"},
{"西瓜","绿色"},
{"桔子","黄色"},
};
}
}

2、test类

package testclasses1;

import org.testng.annotations.Test;

public class TestNG_DataProviders {

//    dataProviderClass=TestData.class:用于引用专门存放测试数据的类,格式:dataProviderClass=测试数据类名.class
@Test(dataProvider="inputs",dataProviderClass=TestData.class)
public void testMethod1(String input1,String input2) {
System.out.println("Input 1:"+input1);
System.out.println("Input 2:"+input2);
}
}

3、运行结果:

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

欢迎关注,转载请注明来源。

章节十六、7-DataProviders的更多相关文章

  1. 章节十六、3-TestNG方法和类注解

    一.Test Suite(测试套件) 我们通常认为一个testcase就是一个测试方法,但是会有很多的testcase,所以我们不可能把所有的testcase放到同一个测试类中,假如需要测试的页面有1 ...

  2. 章节十六、1-TestNG简介

    一.TestNG 介绍 1.TestNG 是一个来自 JUnit 和 NUnit 的测试框架,它具拥有更多的功能,提高了 执行的效率. 2.TestNG 是一个开源的自动化测试框架 去除了老框架的大部 ...

  3. 章节十六、2-TestNG注解和断言

    一.TestNG注解的testcease不是自上而下运行的,而是按照方法名的字母排序或数字的大小顺序运行的. 二.断言:判断返回的结果与我们的预期结果是否一致. 1.Assert.assertTrue ...

  4. 章节十六、4-TestNG高级功能--把测试方法分优先级、分组执行

    一. 把测试方法分优先级执行----->(priority=索引) 1.新建一个testng方法 package testclasses; import org.testng.annotatio ...

  5. 章节十六、5-TestNG高级功能--Part2

    一.测试用例的依赖关系--->(dependsOnMethods = {"依赖方法名"}) 1.在实现自动化的过程中,有些测试用例必须在其它测试用例执行之后才能运行,两者之间 ...

  6. 章节十六、6-xml参数化and并行case

    一.读取xml文件中参数 1.案例演示--->创建一个需要读取数据的类 package testclasses; import org.testng.annotations.Test; impo ...

  7. 章节十六、8-ITestResult接口

    一.ITestResult:该接口就像一个监听器,能够监听每个方法执行后的状态(是否成功)并将结果返回给我们. package testclasses1; import org.testng.anno ...

  8. 章节十六、9-Listeners监听器

    一.IInokedMethodListener 1.实现一个类来监听testcase的运行情况. package listenerspackage; import org.testng.IInvoke ...

  9. 章节十六、10-TestNG报告和日志

    一.在进行自动化的过程中,日志一般采用log4j 2进行日志记录,但TestNG自己本身也带有日志记录功能(reporter),它的好处在于日志中记录的内容都是testng自动生成的. package ...

随机推荐

  1. 禅道、jenkins部署记录

    禅道部署1.检查你linux系统的位数(uname -a)2.下载对应位数的禅道包3.通过xftp工具将禅道包拷贝到虚拟机的/opt目录4.tar 对禅道包进行解压5.改配置:vi /opt/zbox ...

  2. 为什么建立数据仓库需要使用ETL工具?

    在做项目时是不是时常让客户有这样的困扰: 1.开发时间太长 2.花费太多 3.需要太多资源 4.集成多个事务系统数据总是需要大量人力成本 5.找不到合适的技能和经验的人 6.一旦建立,数据仓库无法足够 ...

  3. android ——网络编程

    一.WebView 这个View就是一个浏览器,用于展示网页的. 布局文件: <LinearLayout xmlns:android="http://schemas.android.c ...

  4. 科普向 + 折腾向 ——你了解磁盘、分区、文件系统、GPT、UEFI吗?在笔记本上安装五个系统是怎样的体验?

    [Windows 7 + Windows 8 (PE) + Windows 10 + deepin-Linux + MacOS X] 前言:随着软硬件技术的发展UEFI引导逐渐取代传统BIOS引导,最 ...

  5. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...

  6. SoapSerialization——手机号码归属地

    public class MainActivity extends AppCompatActivity { private EditText etNumber; private TextView tv ...

  7. 百度Echarts,蚂蚁金服G2,D3三种主流可视化工具对比

    1.百度的Echarts 官网:https://echarts.baidu.com/ 介绍:ECharts,缩写来自Enterprise Charts,是百度推出的一款开源的,商业级数据图表,它最初是 ...

  8. Mysql优化(出自官方文档) - 第八篇(索引优化系列)

    目录 Mysql优化(出自官方文档) - 第八篇(索引优化系列) Optimization and Indexes 1 Foreign Key Optimization 2 Column Indexe ...

  9. ansible之变量

    一.常用系统变量 1. loop   #表示循环,去读循环体里的变量固定使用{{item}},item是个字典对象item.key=value,例如如下playbook内容: --- - name: ...

  10. tracert和traceroute介绍

    一.tracert和traceroute简介 相同点:都是用来跟踪路由,帮助排查问题,关注的是过程,而ping关注的是结果 不同点:tracert请求是icmp echo报文 traceroute请求 ...