TestNG使用@Parameter给要测试的方法传递参数

当需要测试的方法含有参数时,可以通过@Parameters 注解给该方法传递参数。

比如下面这个类,要调用whoami则必须写一个main函数,然后在main函数中调用该函数,并传入参数,使用TestNG的@Parameters参数则不需要这么做。

package ngtest;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class Student {
    @Parameters({"name","age"})//表示该函数使用的参数由testng.xml提供,第一个参数是xml中的name参数,第二个是age参数
    @Test
    public void whoami(String name,String age){
        System.out.println("I am "+name+","+age+" years old.");
    }
}

testng.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <parameter name="name" value="Mike"></parameter>  <!--参数name的值是Mike-->
  <parameter name="age" value="18"></parameter>        <!--参数age的值是18-->
  <test name="Test">
    <classes>
      <class name="ngtest.Student"/>
    </classes>
  </test> 
</suite> 

运行该testng.xml就会把name和age的值代入到函数的参数列表中,然后执行该函数。输出结果:

[TestNG] Running:
  D:\workspace\tester\testng.xml

I am Mike,18 years old

===============================================
Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

还可以使用Optinal注解,如果在testng.xml中没找到Parameters中指定的参数,那么就会使用Optional中的参数来替代。

public class TestNg3 {
    @Parameters({"parm1"})
    @Test
    public void Test(@Optional("没有参数只能用我了") String a){ //如果在testng.xml中没有找到param1参数,则会给a赋值“没有参数只能用我了”
        System.out.println(a);
    }//打印 没有参数只能用我了
}

testng.xml文件中参数的作用范围

testng.xml文件中的参数是有作用范围的,下面的param1在全局范围内都是hahahaha,但是在一个Test内是oooo,这种情况特别适用于在全局范围内某个值是固定的,但是在某个特殊情况下需要改变它的值的情况

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="My test suite">
    <parameter name="parm1" value="hahahaha"/>
    <test name="First Test">
    <parameter name="parm1" value="oooooooo"/>
        <classes>
            <class name="com.cangqiong.test.TestNg3"/>
        </classes>
    </test>
</suite>

@Parameter参数使用的位置

  1. 可以用在任意有@Test、@Before/@After 或者@Factory注解的方法上
  2. 可以用在一个类的有参数构造方法上,此类的有参数构造方法只能有一个带@Parameter注解,再执行testng.xml时就会调用此构造方法构造此类的对象。

转载于:https://www.cnblogs.com/beifucangqiong/p/11180617.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值