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. 多线程pre

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  2. (转载)Nginx/LVS/HAProxy三种主流负载均衡软件的对比

    原地址:http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些 ...

  3. Class.getResource()方法的使用

    我们之前使用路径总是有点不知道怎么用,发现别人使用Class.getResource()方法,好像挺不错的样子.于是看看博客,简单学习下. 参考链接:http://blog.csdn.net/lcj8 ...

  4. Nginx安装配置详解

    http://nginx.org/download/ 下载对应的Nginx 安装nginx之前需要安装依赖包 yum install gcc gcc-c++ zlib-devel pcre-devel ...

  5. Eclipse 项目有红惊叹号

    Eclipse 项目有红感叹号原因:显示红色感叹号是因为jar包的路径不对 解决:在项目上右击Build Path -> Configure Build Paht...(或Propertise- ...

  6. 414 - Machined Surfaces

    Sample Input (character "B" for ease of reading. The actual input file will use the ASCII- ...

  7. 企业web管理软件开发平台

    可以自定义拖动记忆位置的part桌面 权限(功能菜单查看范围)设置界面 权限(人员数据查看范围)设置界面 菜单排序和名称设置界面 业务模块 自定义字段界面 业务功能  列表界面 业务功能   查询界面 ...

  8. 对ashx请求用Gzip,Deflated压缩

    //GZIP压缩 //查看请求头部 string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToStr ...

  9. Hadoop NameNode 高可用 (High Availability) 实现解析[转]

    NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode ...

  10. hadoop之 Hadoop1.x和Hadoop2.x构成对比

      Hadoop1.x构成: HDFS.MapReduce(资源管理和任务调度):运行时环境为JobTracker和TaskTracker: Hadoop2.0构成:HDFS.MapReduce/其他 ...