当需要测试的方法含有参数时,可以通过@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时就会调用此构造方法构造此类的对象。

TestNG使用@Parameter给要测试的方法传递参数的更多相关文章

  1. 给方法传递参数:ref参数和out参数

    /*--------------------------------------------------- 给方法传递参数:ref参数和out参数 (P106) ------------------- ...

  2. Java方法传递参数传值还是传址的问题

    这几天重构项目代码遇到一个疑问:可不可以在方法A中定义一个boolean变量b为false,然后A调用方法C把b传递到C方法中经过一些列业务判断后修改为true,C执行结束后A方法中b的值还是原来的f ...

  3. HTML的GET方法传递参数样式。

    #HTML的GET方法传递参数样式.http://127.0.0.1:8080/web1/urlinfo/getobject.html?UserId=1&UserName=ad

  4. tornado框架的get方法传递参数

    tornado框架的get方法传递参数,代码: # encoding: utf-8 """ @version: ?? @author: andu99 @contact: ...

  5. MVC学习系列2--向Action方法传递参数

    首先,新建一个web项目,新建一个Home控制器,默认的代码如下: public class HomeController : Controller { // GET: Home public Act ...

  6. c# 方法传递参数

    一.参数的使用方法: 1.值参数(Value Parameter ) 格式:方法名称(参数类型 参数名称[,参数类型 参数名称]) 2.引用参数(Reference Parameter ) 格式:方法 ...

  7. [ActionScript 3.0] 通过内联函数对addFrameScript方法传递参数

    虽然说不推荐使用影片剪辑隐藏方法addFrameScript();但是解决某些问题,此方法的确会方便很多. 但是却不能直接传递参数,不过可以用迂回的方法,如下: mc.addFrameScript(m ...

  8. JAVA方法传递参数:传值?传引用?

    先来看下面这三段代码: //Example1: public class Example1 { static void check(int a) { a++; } public static void ...

  9. elementUI 等 UI框架中,@change方法传递参数

      有些业务中,在使用 @change 回调的时候需要动态获取当前循环下的特定值,但是@change方法一旦传递参数就会覆盖原本的数据,对此,有两种方法解决: // 这种方法据说会改变 this 指向 ...

随机推荐

  1. SpringBoot项目多数据源配置

    博主总结的不错,事务也考虑到了,存一下: https://blog.csdn.net/xqnode/article/details/86498507

  2. 【时间工具】整理下java时间换算专题

    首先总结了一下日期转换基础,最常用的两个工具类Date与calender,转换方法如下: package com.zzt.spider; import java.text.SimpleDateForm ...

  3. Codeforces Round #563 (Div. 2)A

    A. Ehab Fails to Be Thanos 题目链接:http://codeforces.com/contest/1174/problem/A 题目 You’re given an arra ...

  4. SQL 对float类型列进行排序引发的异常

    车祸现场 要求:根据学分和完成时间获取前200名学员,当学分相同时,完成时间较早的排在前面 可以明显看到,完成时间为4.1号的记录排在了3.27号前面. 事故原因 float 表示近似数值,存在精度损 ...

  5. 使用 cxf的程序 在win10 测试部署时报空指针异常

    2018-11-08 15:50:55.072 DEBUG 21524 --- [nio-8080-exec-1] o.s.b.w.s.f.OrderedRequestContextFilter  : ...

  6. HDU 6058:Kanade's sum(思维)

    题目链接 题意 给出一个n和一个k,求1~n的每个区间的第k大的总和是多少,区间长度小于k的话,贡献为0. 思路 首先有一个关系:当一个数是第k大的时候,前面有x个比它大的数,那么后面就有k-x-1个 ...

  7. ORM的记录添加和删除

    记录查询包括:跨表查询(重点),  分组查询,聚合查询,  F与Q查询 查询之前需要先添加数据: 一对多添加: def addrecord(request): Book.objects.create( ...

  8. Spark 中 RDD的运行机制

    1. RDD 的设计与运行原理 Spark 的核心是建立在统一的抽象 RDD 之上,基于 RDD 的转换和行动操作使得 Spark 的各个组件可以无缝进行集成,从而在同一个应用程序中完成大数据计算任务 ...

  9. 多线程总结-同步之ReentrantLock

    目录 1 ReentrantLock与synchronized对比 2.示例用法 2.1 基本用法 2.2 尝试锁 2.3 可打断 2.4 公平锁 1 ReentrantLock与synchroniz ...

  10. NOIP2011聪明的质监员题解

    631. [NOIP2011] 聪明的质监员 ★★   输入文件:qc.in   输出文件:qc.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 小 T 是一名质量监督 ...