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时就会调用此构造方法构造此类的对象。
posted @ 2019-07-13 14:53  背负苍穹  阅读(2777)  评论(0编辑  收藏  举报