testng提供测试数据的两个注释:@DataProvide和@Parameter
 
一、通过testng.xml中设置参数
(实际上testng.xml只是一个名字,可以起任何一个名字,只要是.xml文件,然后文件格式按照testng的文档格式DTD来就可以了)
testng.xml中的内容:
<?xml version="1.0" encoding="UTF-8" ?>
<suite name = "testngframetest">
    <parameter name="para" value="test_para1"/>
    <test name="测试参数赋值">
        <classes>
            <parameters>
                <parameter name="para1" value="test_para1"/>
                <parameter name="para2" value="test_para2"/>
            </parameters>
            <class name = "paramer">
                <methods>
                    <include name ="showparamer"></include>
                </methods>
            </class>
        </classes>
    </test>
</suite>
 
.java文件的测试用例中通过parameters获得数据
使用方法1:
@Test(parameters="para1")
public void testcase(String para1){
     具体的测试用例,参数中的para1自动获取@Test中声明的变量,读取的是testng的xml文件中声明的参数para1的value值
}
如果有多个参数,可以使用这种方式:@Test(parameters={"para1","para2"})
 
使用方法2:
@Parameter({"para1","para2"})
@Test
     具体的测试用例(参数@Parameter写在了@Test前面)
 
具体代码如下:
import org.testng.annotations.Test;
public class paramer {
    @Test(parameters ={"para1","para2"})
    public  void showparamer(String para11,String para22){
        System.out.println("testng获得的参数para1如下:"+para11);
        System.out.println("testng获得的参数para2如下:"+para22);;
    }
}
 
说明:
1.测试用例中设置的参数名随意,但是数量一定要和@Parameter中提供的数量一致,按照testng.xml中定义的顺序来取值的
2.<parameter>可以声明在<suite>或者<test>级别,在<test>下的<parameter>会覆盖在<suite>下声明的同名变量
3..java的测试用例中,可以通过@Optional("参数")来声明变量,如果没有在testng.xml中没有找到参数,会用@Optional("")中声明的参数
例如下面的代码,testng中没有声明para1和para2时,执行用例时会直接复制test1和test2
import org.testng.annotations.Optional;
import org.testng.annotations.Test;
public class paramer {
    @Test(parameters ={"para1","para2"})
    public  void showparamer(@Optional("test1") String para11, @Optional("test2") String para22){
        System.out.println("testng获得的参数para1如下:"+para11);
        System.out.println("testng获得的参数para2如下:"+para22);;
    }
}
 
二、通过注释@Dataprovide获得参数
(testng.xml只能传递简单的参数,如果是循环遍历的使用不同的参数则不可以实现。这时可以使用@Dataprovide来提供数据)
 
提供数据的方法:
@DataProvider(name = "dataprovider1")
public Object[][] dataprovide(){
    return new Object[][]{{1,2,3},{3,2,1}};
}
说明:
1.@DataProvide只能返回Object数组结果
2.Object的行中的每一列标识一个参数(比如上面的例子是3个参数),行数决定了调用的方法要执行的次数(比如上面的例子是执行2次)
 
调用数据方法:
@Test(dataprovide="XXX")
说明:
1.XXX为@DataProvide声明的一个名字,返回的是一个Object数组
2.方法的执行次数为赋值参数的遍数。比如提供数组为1行,则只执行一次;如果是数组为3行,则执行3次。
 
其他扩展:
1.@DataProvide写在单独的class里,增强复用性。
这时调用该数据的方法为:@Test(dataprovide="XXX",dataClass=YYY.class)
说明:读取YYY.class下的@DataProvide为XXX的Object数组数据
2.@DataProvide下定义的数组,通过其他文件读取,比如读取excel,返回一个Object数组
3.@DataProvide可以通过parallel实现并行执行线程,默认10个,可以在testng.xml中进行修改(<suite name="XXX" data-provider-thread-count="YYY">)
@DataProvider(name = "dataprovider1",parallel = true)
public Object[][] dataprovide(){
    return new Object[][]{{1,2},{2,1}};
}
@Test(dataProvider = "dataprovide")
public void showDataprovide(int a,int b,Method c){
    System.out.println("DataProvider获得的参数para1如下:"+a);
    System.out.println("DataProvider获得的参数para2如下:"+b);;
    System.out.println("DataProvider获得的参数para2如下:"+c.getName());

}

4.@DataProvide和@Parameters不能同时声明,但是可以通过其他方法实现同时使用。
String testId = context.getCurrentXmlTest().getParameter("test_id"); 
 

testng参数化(提供测试数据)的更多相关文章

  1. testng参数化(提供测试数据)【转】

    testng提供测试数据的两个注释:@DataProvide和@Parameter   一.通过testng.xml中设置参数 (实际上testng.xml只是一个名字,可以起任何一个名字,只要是.x ...

  2. TestNG 参数化应用

    一.第一种参数化方式(testng.xml配置参数) 1.新建ParameterDemo04类 2.拷贝类的路径 3.testng.xml配置类地址及参数 <?xml version=" ...

  3. testng入门教程10 TestNG参数化测试

    在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大的不同数量的测试.参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值. TestNG让你 ...

  4. TestNG参数化测试Spring应用Dubbo接口

    一.配置dubbo的Bean文件: 配置spring-dubbo.xml文件: <dubbo:reference interface="com.datatrees.basisdata. ...

  5. (转)TestNG框架提供两种传入参数的方法:

    1.从testng.xml传入参数. 如果参数是一些简单的值,可以直接在testng.xml中定义.这也是最常用的一种. 可以在测试用例中给参数一个默认值.这样,即使在xml文件中没有这个变量,你的测 ...

  6. TestNG参数化测试-数据提供程序 @DataProvider方式

    在 testng.xml 中指定参数可能会有如下的不足: 1.如果你压根不用 testng.xml. 2.你需要传递复杂的参数,或者从Java中创建参数(复杂对象,对象从属性文件或者数据库中读取的et ...

  7. TestNG参数化测试【转】

    原文:http://www.yiibai.com/testng/20130916303.html 在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大 ...

  8. testng参数化及用例排序

    http://blog.sina.com.cn/s/blog_6966650401012ra0.html 一.一个简单的测试谷歌搜索 import org.testng.annotations.Tes ...

  9. testNG参数化

    听说testNG比junit更好用,记录下 环境:springboot2.0+testNG6.8+maven+myeclipse 一 安装 (1)m'yeclipse安装testNg包,下载testN ...

随机推荐

  1. New Concept English Two 20 52

    $课文50  乘车兜风 510. I love travelling in the country, but I don't like losing my way. 我喜欢在乡间旅行,但却不愿意迷路. ...

  2. 此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转

    感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-- ...

  3. 在win10下安装双系统ubuntu16.04.3教程

    闲暇了两天,终于想起来要装一个Liunx系统了.于是捣鼓了一番,实现了在Win10下安装Ubuntu16.04.3版本. 一.准备工作 下载Ubuntu 16.04.3镜像 准备一个2G以上的U盘 下 ...

  4. [BZOJ2727][HNOI2012]双十字

    bzoj luogu sol 先预处理从每个点出发向上/下/左/右能延伸多长. 考虑怎么计算答案.我们只要枚举中轴线,再枚举上方的十字交点,枚举下方的十字交点,然后算答案即可. 考虑一个左右宽的最小值 ...

  5. [LOJ2541]「PKUWC2018」猎人杀

    loj description 有\(n\)个猎人,每个猎人有一个仇恨度\(w_i\),每个猎人死后会开一枪打死一个还活着的猎人,打中每个猎人的概率与他的仇恨度成正比. 现在你开了第一枪,打死每个猎人 ...

  6. nats 学习 request/reply 模式基本使用

    nats 一个云原生的消息系统,使用简单,客户端丰富,支持的模式是pub/sub 但是集成比较灵活,可以支持loadblance, request/reply pub/sub 代码演示的是reques ...

  7. Spring 装配Bean入门级

    装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean  B ...

  8. 异步编程 In .NET(转载)

    概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们 ...

  9. php代码编译的实现

    1.php是解析型的高级语言,zend内核使用c语言实现,有main函数,php脚本就是输入,内核处理后输出结果,内核将php脚本翻译成c程序可识别的opcode就是php的编译. c语言的编译将c代 ...

  10. 马士兵Spring-声明式事务管理-annotation

    1.事务加在DAO层还是service层? service中可能多涉及多种DAO的操作,比如存了一个User之后,需要保存一条日志信息:如果在DAO中分别设置事务的话,一个DAO下面方法抛出异常了,但 ...