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. 12.21 Gson的常用用法 功能介绍 特点

    使用谷歌GSON常用语法: 功能:映射Java Object与json格式的数据 1.通过Annotation注解来声明 2.支持自定义属性名称 3.支持包含或排除属性 4.支持自定义接口自己完成解析 ...

  2. 『转』Bitdefender Internet Security 2013 – 免费1年

    活动中可以选择获取Bitdefender Internet Security 2013+Bitdefender Mobile Security (手机版)各一年激活码申请地址:https://part ...

  3. Git Error: warning: refname 'origin/branch-name' is ambiguous.

    When this happened, it created the file .git/refs/heads/origin/branch-name. So, I just deleted the f ...

  4. [转] .net软件反编译笔记

    原文地址:http://blog.csdn.net/three_bird/article/details/51433734 在软件的破解及源码获取及重新编译的道路上会遇到一些问题,书此备查. 大名鼎鼎 ...

  5. VC++ 6.0 C8051F340 MFC programming note

    /************************************************************************************** * VC++ 6.0 C ...

  6. I.MX6 eMMC 中启动U-boot存放的首地址

    /************************************************************************************ * I.MX6 eMMC 中 ...

  7. springboot结合开源editor.md集成markdonw编辑器

    今天来实现一个简单的功能,通常blog后台编辑大多使用的是富文本编辑器,比如百度的Ueditor,比较轻巧的wangEditor,那么如何使用开源editor.md的markdown呢? 搭建一个sp ...

  8. 7-8 List Leaves(25 分)

    Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...

  9. 白帽子讲web安全——一个安全解决方案的诞生细节

    1.白帽子:做安全的人.主要做的事,防御,是制定一套解决攻击的方案.而不是只是解决某个漏洞. 2.黑帽子:现在说的黑客.让web变的不安全的人.利用漏洞获取特权.主要做的事,攻击,组合各种方法利用漏洞 ...

  10. C#多线程应用:子线程更新主窗体控件的值(一)

    我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到.在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录. 说起多线程之间的更 ...