testng执行参数_testNG之参数化

一. 举例说明

  1. 创建一个类,包含一个测试方法,和测试方法前后置执行方法:

使用注解@Parameters命名参数,传入参数名称列表,对应方法中的参数

8834f110f04b1df628d990ba0285d5d0.png

  1. testng.xml文件中定义对应的参数及值,参数名称与方法中命名的名称对应:

b47f4b57300ac1f6a038b08ffd86e74e.png

二.参数化@Parameters注解说明

@Parameters注解可以放置在已有@Test、@Before、@After、@Factory注解的方法上。

这个注解可以用于初始化类中的测试方法的参数。

注意:

    1)XML文件中的参数与java方法中的参数顺序必须一致,否则testNG会抛出错误。

    2)参数的作用域已经确定。在testng.xml中,可以在和标签下声明。如果多个参数名称一致,标签下的参数具有优先权。这种特性适用于一个参数适用于所有测试方法,而只有某些测试方法需要重写参数。

三.带有参数的数据驱动

        如果需要传递复杂的参数或java创建的对象(复杂对象、从属性文件或数据库读取数据等),通过testng.xml文件的方式可能不太适合。这种情况可以使用数据驱动的方式为你的测试提供数据。数据库驱动是在类中定义一个方法,返回一组数据对象。该方法使用@DataProvider注解。

  1. 定义一个类,包含数据提供方法(使用@DataProvider注解)创建批量数据,使用数据的测试方法:

f466393c63c7fed31f4dd8e6421e7742.png

  1. testng.xml描述测试方法,并执行:

f02d594d527cbf84c560b4c00e3282e1.png

    将定义的2个数据代入测试方法中,并输出测试结果:

ba7bdc48a0e368b593ebc38938be7372.png

    2.1 dataProvider也支持注入,testNG将使用测试上下文进行注入。数据驱动可以返回以下类型的数据:

        1)数组对象(Object[][]),第一维为调用测试方法的次数,第二维包含一个必须与测试方法参数类型兼容的对象数组。

        2)迭代器(Object[]),与1)不同的是,迭代器允许惰性地创建测试数据。TestNG将调用迭代器,然后使用迭代器返回的参数逐个调用test方法。适用于需要传递给测试方法的参数很多,又不想预先创建所有参数集。

        3)对象数据(Object[])。与2)类似,对源数组的每个元素调用一次测试方法。

3.2 如果声明了@DataProvider的数据提供方法的第一个参数为带有反射方法,TestNG将把当前测试方法作为第一个参数传入。当多个测试方法使用同一个@DataProvider提供的测试数据,并希望不同的测试方法返回不同的值时,这是很有用的方式。

  1. 定义1个数据提供方法和2个测试方法:

653d786fbbebfe98fb6160475157db69.png

  1. testng.xml增加配置并执行,不同的测试方法返回不同的参数,并输出:

8f3a51ef2b442d1096f6f18d9bac5b82.png

    这种方式适用于大部分的测试方法使用一种数据,特别的测试方法使用特殊的测试数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值