51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1290|回复: 0
打印 上一主题 下一主题

TestNG中的数据源DataProvider概述

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-23 16:49:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于初始值是复杂的对象,或者初始值是执行过程中生成的情况,就只能使用这里的数据源@DataProvider。

使用TestNG中的数据源@DataProvider,所有的工作都在测试类中完成。具体过程分为两个步骤,第一步是定义数据源,第二步是在测试方法中引用数据源。

1.在测试类中定义数据源

在测试类中定义数据源就是提供一个生成数据源的方法,该方法通过@DataProvider声明一个唯一的名称。另外,生成数据源的方法必须返回Object[][]类型(或者Iterator<Object[]>),即复杂对象的数组。示例
如下:
  1. @DataProvider(name = "test1")
  2. public Object[][] createData1() {
  3. return new Object[][] {
  4.    { "Cedric", new Integer(36) },
  5.    { "Anne", new Integer(37)},
  6. };
  7. }
复制代码

该数据源的名称为test1,可供测试方法直接引用。
该数据源中的复杂对象包含两个属性,第一个属性是字符串类型,第二个属性是整型。那么在引用该数据源的测试方法中,就应该有两个对应类型的参数。

补充:如果引用数据源的测试方法是在另一个测试类中定义的,为了保证数据源的就绪,生成数据源的方法必须定义为static的,示例如下:
  1. @DataProvider(name = "create")
  2.   public static Object[][] createData() {
  3.     return new Object[][] {
  4.       new Object[] { new Integer(42) }
  5.     };
  6.   }
复制代码

2.在测试方法中引用数据源

在测试方法中通过数据源的名称引用数据源,示例如下:

  1. @Test(dataProvider = "test1")
  2. public void verifyData1(String n1, Integer n2) {
  3. System.out.println(n1 + " " + n2);
  4. }
复制代码

补充:如果被引用数据源的在另一个测试类中定义的,还需要指明其所在测试类,示例如下:

  1. @Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
  2.   public void test(Integer n) {
  3.     // ...
  4.   }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 20:21 , Processed in 0.061420 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表