TestNG数据驱动测试

测试过程中会遇到的问题:

  • 测试需要针对许多具有类似结构的数据来执行
  • 实际的测试逻辑是一样的,仅仅发生改变的是数据
  • 数据可以被一组不同的人修改
这种类型的测试通常有很好的处理方法,即所谓的“数据驱动测试”,它与前面的测试不同,它的重点在于被测试的不是Java代码逻辑,而是这段代码操作的数据。

TestNG让您有两种方式向测试方法传递参:
  • 利用testng.xml
  • 利用data providers

1.利用testng.xml传递参数

定义一个或多个参数,提供它们的名称和值

<suite name="Parameters">
<parameter name="xml-file" value="accounts.xml"/>
<parameter name="hostname" value="arhonis.example.com"/>

也可以在<test>层定义


<test name="Parameters">
<parameter name="xml-file" value="accounts.xml"/>
<parameter name="hostname" value="arhonis.example.com"/>
</test>




testNG自动将testng.xml中的值转化为参数的类型,下面是支持的类型





2.利用@DataProvider传递参数

从本质上来说,数据提供者同时实现两个目的
  • 向测试方法传递任意数目的参数(可以是任何Java类型)
  • 根据需要,允许利用不同的参数集合对它的测试方法进行多次调用。

例如测试程序
public boolean isBetween(int n, int lower, int upper)




首先要注意的是,我们用@Test annotation在使用dataProvider属性,它指定了名为range-provider的数据提供者。我们的测试方法希望得到它传给被测方法的3个参数和第四个参数,即预期的boolean返回值。

数据提供者名为range-provider,它返回一个二维的对象数组。每一行都对应一次测试方法的调用,参数是列出的n,low,upper以及预期的boolean的结果。


3.针对数据提供者的参数

数据提供者本身可以接受两个类型的参数:Method和ITestContext

TestNG在调用数据提供者之前会设置这两个参数,这两个参数为代码提供了某种上下文,然后再决定做什么。可以根据需要任意指定这两个参数的组合。



1)Method参数

如果数据提供者第一个参数是java.lang.reflect.Method,TestNG传递这个将调用的测试方法。如果您希望数据提供者根据不同的测试方法但会不同的数据,那么这种做法非常有用。






如果要调用的方法名为two,这个数据提供者就返回2;如果要调用的方法名为three,就返回3.
得到输出













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值