zoukankan      html  css  js  c++  java
  • testng参数化方法:Parameters和DataProvider

      Parameters注解在测试方法上指定参数列表,然后在测试方法中声明对应的形参,形参与参数列表一一对应,但名字可以不同,如下所示:

    1 public class Test1 {
    2     
    3     @Parameters({"Name", "Age", "Hobby"})
    4     @Test
    5     public void test1(String name, int age, String hobby) {
    6         System.out.println(name + " is " + age + " years old and likes " + hobby);
    7     }
    8 }

      然后在XML文件中通过<parameter>标签对每个参数赋值,采用name-value对的形式:

     1 <suite name="suite1">
     2     <parameter name="Name" value="xiaoming" />
     3     <parameter name="Age" value="20" />
     4     <parameter name="Hobby" value="dajiangyou" />
     5 
     6     <test name="test1" verbose="2">
     7         <classes>
     8             <class name="sea.Test1" />
     9           </classes>    
    10     </test>
    11     
    12 </suite>

      运行结果为:

    xiaoming is 20 years old and likes dajiangyou
    PASSED: test1("xiaoming", 20, "dajiangyou")

      Parameters一般用于比较简单的参数,对于参数比较多、复杂或者需要从文件读取的时候一般使用DataProvider注解。

      采用DataProvider时构造参数的方法必须返回Obiect[][],可以看着二维数组(当然也可存放一维数据)。

      使用时,首先定义一个DataProvider,通过name参数指定该测试数据的名字;

      然后在测试方法中,通过Test注解的dataProvider参数指定需要使用的测试数据名字,多个测试方法可以使用同一个dataProvider;

      最后在测试方法的形参列表中,定义与Obiect[][]的每一行数据一一对应的参数,该测试方法被执行时,有多少组参数就会被执行多少次。

      举例如下,可以看到test2这个用例被执行了3次:

     1 public class Test1 {
     2     @DataProvider(name = "data1")
     3     public Object[][] createdata() {
     4         return new Object[][] {
     5             {"lilei", 20, "football"},
     6             {"hanmeimei", 18, "music"},
     7             {"wangnima", 25, "baozoumanhua"}
     8         };
     9     }
    10 
    11     @Test(dataProvider = "data1")
    12     public void test2(String name, int age, String hobby) {
    13         System.out.println(name + " is " + age + " years old and likes " + hobby);
    14     }
    15 }
    lilei is 20 years old and likes football
    hanmeimei is 18 years old and likes music
    wangnima is 25 years old and likes baozoumanhua
    PASSED: test2("lilei", 20, "football")
    PASSED: test2("hanmeimei", 18, "music")
    PASSED: test2("wangnima", 25, "baozoumanhua")
  • 相关阅读:
    Qt中的SIGNAL和SLOT
    Android单个模块编译
    decoupling of objetctoriented systems
    设计模式之Objectifier
    代码示例:调用SPS提供的remoting服务,在线把Office文档转换成html文档
    利用WSS做后台存储设计一个统一的信息发布平台
    元数据(metadata)在企业应用开发中的作用
    面向对象的软件设计中应当遵守的原则
    使用NUnit在.Net编程中进行单元测试
    最近在使用sps类库过程中发现了一个让我比较疑惑的问题(有关items属性的)
  • 原文地址:https://www.cnblogs.com/haigege/p/5450742.html
Copyright © 2011-2022 走看看