testng参数化方法

[size=xx-large][size=large][size=medium][size=xx-small]测试方法可以带有参数,每个测试方法都可以带有任意数量的参数,并且可以通过TestNG的@Parameters传递。
传递方式有两种:testng.xml 和编程。
------1.使用testng.xml设置参数
如果只是使用相对简单的参数,可以再testng.xml中指定,
java文件:
public class ParaByTestNG {
      @Parameters({ "name"})
      @Test
      public void testPara1(String name){
           System. out.println(name);
     }
}
testng.xml文件:
< suite name= "Suite1" parallel = "false">
  < test name= "param1" >
    <classes >
      <class name = "test.param.ParaByTestNG"/>
    </classes >
    <parameter name = "name" value= "zhangsan"></ parameter>
  </ test> <!-- Test -->
</ suite>
目录结构
--src
     ---test.param
          ----ParaByTestNG.java
     ---testng.xml
注意:1).如果一个项目中有多个java文件需要传参数,且这些参数需要写在一个testng.xml文件中,那么可以在suite节点下添加多个test节点,test对应的那么不一样就行了。如果添加的是suite节点,将报错:The markup in the document following the root element must be well-formed.
2).同一项目中的java文件传递的参数也可以写在不同的xml文件中,只要xml文件名称唯一,需要的时候运行对应的xml文件就行了
3).通过xml文件运行testng suite时,xml只能在src目录下才行
-----2.使用DataProvider提供参数
testng.xml指定参数可以存在不足
     ---不想使用testng.xml
     ---需要传递复杂的参数,或者从java中创建参数
当传递的参数比较复杂时,可以使用DataProvider来给需要的测试提供参数。DataProvider是一个能返回数组的方法,且这个方法用@DataProvider标注,具体代码如下:
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParamByProvider {

      @DataProvider(name= "test1")
      public Object[][] createData1(){
            return new Object[][]{
                     { "zhangsan", "15点参加会议" },
                     { "lisi", "今天可以提前下班" }
           };        
     }
      @Test(dataProvider= "test1")
      public void verifyData1(String n1,String n2){
           System. out.println(n1+ "   "+n2);
     }
}
@DataProvider提供参数所需要的值,@Test获得参数,直接运行Java类就行了
如果需要传入其他参数,修改createData1中的返回数组的值即可。
注:1)这里的@DataProvider的name对应的值必须和@Test中dataProvider对应的值一样,这样才可以把DataProvider的值传到@Test中
2)默认情况下,DataProvider会查找当前测试类或者测试类的基类,如果希望被其他类使用,将其指定为static,并通过dataProviderClass属性指定要使用的类
创建staticProvider方法
public   class StaticProvider {
      @DataProvider(name= "create")
      public static Object[][] createData(){
            return new Object[][]{
                      new Object[]{ new Integer(23)}
           };  
     }
}
创建MyTest方法
public class MyTest {
      @Test(dataProvider= "create",dataProviderClass=StaticProvider. class)
      public void test(Integer n){
           System. out.println(n);
     }
}
运行MyTest方法得出测试结果

[/size][/size][/size][/size]

猜你喜欢

转载自zd9509-163-com.iteye.com/blog/2095556
今日推荐