@Parameter注解

作者: 迷糊银儿 | 来源:发表于2018-11-02 22:31 被阅读15次

通过TestNG实现参数化常用两种方式,此篇讲述@Parameters方式的传参用法;
@Parameters读取testng.xml中参数
@DataProvider 注解传参

注意⚠️
1.只有已使用 @Test, @Before/After or @Factory 注解的方法可以使用@Parameters.
2.参数有作用域,在 testng.xml中,参数在 <suite> 或 <test>标签下赋值. 如果有同名参数, <test> 标签下参数优先级高.

语法:
step1:在java类中定义参数名@Parameters({ "paraName" });
step2:在TestNG.xml中设置参数值<parameter name="paraName" value="paraValue"/>

一、传递一个参数 (testDemo11.xml)

<?xml version="1.0" encoding="utf-8" ?>
<suite name="suitTestDemo1" verbose="1">
    <test name="test">
        <parameter name="strName" value="rose" />
        <classes>
            <class name="testNG2.testDemo1" >
                <methods>
                    <include name="testParamOne"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
//类文件 testDemo1
package testNG2;

import org.testng.annotations.*;

/**
 * @Description: 接口:
 * 接口类型:GET
 * @Date: Created in 下午2:18 2018/11/5
 */
public class testDemo1 {

    @BeforeTest
    public void beforeTest() {
        System.out.println();
        System.out.println("-------执行.xml文件结果如下------");
    }

    @Parameters({"strName"})
    @Test
    public void testParamOne(String name) {
        System.out.println(this.getClass().getName() + "_" + name);
    }

    @Test
    @Parameters({"userName", "credit"})
    public void testParamsTwo(String userName, String credit) {
        System.out.println(this.getClass().getName() + "_" + userName);
        System.out.println(this.getClass().getName() + "_" + credit);
    }

    @Parameters({"courseName"})
    @Test
    public void testParamsDefault(@Optional("chinese") String course){
        System.out.println(this.getClass().getName()+"_"+course);
    }
}
-------执行.xml文件结果如下------
testNG2.testDemo1_rose

二、传递多个参数(testDemo12.xml)

<?xml version="1.0" encoding="utf-8" ?>
<suite name="suitTestDemo1" verbose="1">
    <parameter name="userName" value="rose" />
    <parameter name="credit" value="1K" />
    <test name="test">
        <classes>
            <class name="testNG2.testDemo1" >
                <methods>
                    <include name="testParamsTwo"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
-------执行.xml文件结果如下------
testNG2.testDemo1_rose
testNG2.testDemo1_1K

三、使用参数的默认值(testDemo13.xml)

<?xml version="1.0" encoding="utf-8" ?>
<suite name="suitTestDemo1" verbose="1">
<!--没有name=coursename的parameter,testDemo中testParamsDefault方法直接读取默认提供的参数chinese-->
    <test name="test">
        <classes>
            <class name="testNG2.testDemo1" >
                <methods>
                    <include name="testParamsDefault"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
//执行 testParamsDefault方法或者执行testDemo13.xml文件的结果为
-------执行.xml文件结果如下------
testNG2.testDemo1_chinese

项目地址:https://gitee.com/neimenggudaxue/BasicTest

相关文章

网友评论

    本文标题:@Parameter注解

    本文链接:https://www.haomeiwen.com/subject/ppjhxqtx.html