zoukankan      html  css  js  c++  java
  • testNG的常用用法Parameters,DataProvider

    testNG的常用用法Parameters,DataProvider

    一、Parameters

    在testng.xml中配置 里面的name值对应写到 Parameters中然后,在test中输出这个参数名,就可以得到配置中的value值

    实例:
    <suite name="Suite" parallel="classes" thread-count="3">
        <test verbose="2" preserve-order="true" name="TestDebug">
            <parameter name="Name" value="asdfsfa" />
            <classes>
                <class name="com.seventhDay.TestNG1" />
            </classes>
        </test> <!-- Test -->
    </suite> <!-- Suite -->
    
        @Parameters("Name")
        @Test
        public void parametersTest(String Name){
            System.out.println(Name);
        }
    

    结果:

    asdfsfa
    

    二、DataProvider

    a.对象数据:
    @Test(dataProvider = "testdb")
        public void parameterIntTest(Class clzz, String str,String line3, int no) {
    		System.out.println(Thread.currentThread().getName());
           System.out.println("Parameterized Number is : " + clzz);
           System.out.println("Parameterized Number is : " + str);
           System.out.println("Parameterized Number is : " + line3);
           System.out.println("Parameterized Number is : " + no);
        }
    
    @DataProvider(name = "testdb",parallel = false
        		)
        public Object[][] parameterIntTestProvider() {
            return new Object[][]{
                       {Vector.class, "test1","a",1},
                       {String.class, "test2","b",2},
                       {Integer.class, "test3","c",3},
                       {String.class, "test3","c",4},
                       {String.class, "test3","c",4}
                      };
        }
    

    结果:

    [RemoteTestNG] detected TestNG version 7.0.0
    main
    Parameterized Number is : class java.util.Vector
    Parameterized Number is : test1
    Parameterized Number is : a
    Parameterized Number is : 1
    main
    Parameterized Number is : class java.lang.String
    Parameterized Number is : test2
    Parameterized Number is : b
    Parameterized Number is : 2
    main
    Parameterized Number is : class java.lang.Integer
    Parameterized Number is : test3
    Parameterized Number is : c
    Parameterized Number is : 3
    main
    Parameterized Number is : class java.lang.String
    Parameterized Number is : test3
    Parameterized Number is : c
    Parameterized Number is : 4
    main
    Parameterized Number is : class java.lang.String
    Parameterized Number is : test3
    Parameterized Number is : c
    Parameterized Number is : 4
    PASSED: parameterIntTest(class java.util.Vector, "test1", "a", 1)
    PASSED: parameterIntTest(class java.lang.String, "test2", "b", 2)
    PASSED: parameterIntTest(class java.lang.Integer, "test3", "c", 3)
    PASSED: parameterIntTest(class java.lang.String, "test3", "c", 4)
    PASSED: parameterIntTest(class java.lang.String, "test3", "c", 4)
    
    b.迭代器:
    public class TestBean {
    	
    	private  String name;
    	private  String msg;
    	private  String line3;
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getMsg() {
    		return msg;
    	}
    	public void setMsg(String msg) {
    		this.msg = msg;
    	}
    }
    
    public class TestBean2 {
    	
    	private  String name;
    	private  String msg;
    	private  String line3;
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getMsg() {
    		return msg;
    	}
    	public void setMsg(String msg) {
    		this.msg = msg;
    	}
    }
    
    public class DataProviderTest2 {
    	
    	
    	@Test(dataProvider = "mytest")
        public void parameterIntTest(TestBean bean,TestBean2 bean2) {
    	   System.out.println(Thread.currentThread().getName()+" bean "+bean);
           System.out.println("Parameterized Number is : " + bean.getName());
           System.out.println("Parameterized Number is : " + bean2.getMsg());
        }
    
        @DataProvider(name = "mytest", parallel = true)
        public Iterator<Object[]> parameterIntTestProvider() {
        	List<Object[]> dataProvider = new ArrayList<Object[]>();
        	for(int i=0;i<2;i++){
        		TestBean bean = new TestBean();
        		bean.setName("testname"+i);
        		bean.setMsg("--"+i);
        		TestBean2 bean2 = new TestBean2();
        		dataProvider.add(new Object[] { bean,bean2});
        	}
            return dataProvider.iterator();
        }
    
    }
    

    结果:

    [RemoteTestNG] detected TestNG version 7.0.0
    TestNG-PoolService-0 bean testng.TestBean@56d87a9
    TestNG-PoolService-1 bean testng.TestBean@232aa3b3
    Parameterized Number is : testname1
    Parameterized Number is : testname0
    Parameterized Number is : null
    Parameterized Number is : null
    PASSED: parameterIntTest(testng.TestBean@56d87a9, testng.TestBean2@18a96ba9)
    PASSED: parameterIntTest(testng.TestBean@232aa3b3, testng.TestBean2@411e52d7)
    

    作者:我是刘先生
    地址:https://www.cnblogs.com/cekaigongchengshi/
    文章转载请标明出处,如果,您认为阅读这篇博客让您有些收获,不妨点击一下推荐按钮,据说喜欢分享的,后来都成了大神

    欢迎扫码关注微信公众号
  • 相关阅读:
    python基础——返回函数
    python基础——sorted()函数
    python基础——filter函数
    python基础——map/reduce
    python基础——高阶函数
    python基础——迭代器
    python——生成器
    轻量级文本编辑器,Notepad最佳替代品:Notepad++
    python网络编程
    如何检测远程主机上的某个端口是否开启?
  • 原文地址:https://www.cnblogs.com/cekaigongchengshi/p/13445786.html
Copyright © 2011-2022 走看看