TestNG可以通过testng.xml和Data Providers向测试方法传递参数

利用testNG.xml传递参数

1-创建一个TestNG测试类

其中 parameters = {"xml-file","hostname"} 使用来接受参数的,因为有两个值所以有两个参数

package com.lc.testChuanCan;

import org.testng.annotations.Test;

public class testNG05 {
@Test(parameters = {"xml-file","hostname"})
public void testNG05_01(String xmlfile,String hostname) {
System.out.println("我是testNG05 类的testNG05——01方法,\n我传递参数是\nxml-file:"+xmlfile+"\nhostname:"+hostname);
}
}

2-创建一个TestNG.xml文件

设置参数标签

 <parameter name="xml-file" value="accounts.xml"></parameter>
<parameter name="hostname" value="arkonis.example.com"></parameter>
标签:parameter
anme:相当于key ,变量名称;对应TestNG测试类的 parameters = {"xml-file","hostname"} 里面参数名称,名字要一样
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
<parameter name="xml-file" value="accounts.xml"></parameter>
<parameter name="hostname" value="arkonis.example.com"></parameter>
<test name="Test">
<classes>
<class name="com.lc.testChuanCan.testNG05"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

parameter也可在<test></test>里面添加参数

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--在测试suit里添加参数;在这里面添加的参数测试类都可以引用;但在test添加的参数上一级不可以使用-->
<suite name="Suite" parallel="none">
<parameter name="xml-file" value="accounts.xml"></parameter>
<parameter name="hostname" value="arkonis.example.com"></parameter>
<test name="Test">
<classes>
<class name="com.lc.testChuanCan.testNG05"/>
</classes>
</test> <!-- Test -->

<!-- 在test里添加参数 testKey-->
<test name="test01">
<parameter name="testKey" value="我是test标签里面的参数"></parameter>
<classes>
<class name="com.lc.testChuanCan.testNG6"></class>
</classes>
</test> </suite> <!-- Suite -->
package com.lc.testChuanCan;

import org.testng.annotations.Test;

public class testNG6 {

  //testKey参数是在test配置的,hostname是在suite里添加的都可以引用
@Test(parameters = {"testKey","hostname"})
public void textNG06_01(String testKey,String hostname) {
System.out.println("我是testNG05 类的testNG06——01方法,\n我传递参数是\ntestKey:"+testKey+"\nhostname:"+hostname);
}
}

传递参数注释也是使用下面方式

package com.lc.testChuanCan;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class testNG6 { //方式一
@Test(parameters = {"testKey","hostname"})
public void textNG06_01(String testKey,String hostname) {
System.out.println("我是testNG6 类的testNG06——01方法,\n我传递参数是\ntestKey:"+testKey+"\nhostname:"+hostname);
System.err.println("-----------------------------");
}

//方式二
@Parameters({"testKey","hostname"})
@Test
public void textNG06_02(String testKey,String hostname) {
System.out.println("我是testNG6 类的testNG06——02方法,\n我传递参数是\ntestKey:"+testKey+"\nhostname:"+hostname);
}
}

使用testNG.xml传参存在一定的局限性:

例如只能传输java的基础数据类型,

第二种方式传值 @Parameters annotation传递参数

1-使用@DataProvider(name = "reange-provider") 定义一个存储数据的方法

2-在测试方法中使用  @Test(dataProvider = "reange-provider") 引用数据。

 
package com.lc.testChuanCan;

import java.util.HashMap;
import java.util.Map; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; public class testNG07 { @Test(dataProvider = "reange-provider")
public void testNG07_01(int n,int lower,int upper,boolean expected) {
System.out.println("n:"+n+";lower:"+lower+";upper:"+upper+";expected:"+expected);
} @DataProvider(name = "reange-provider")
public Object[][] rangeData(){
int lower = 5 ;
int upper = 10 ; return new Object[][] {
{lower-1,lower,upper,false},
{lower,lower,upper,true},
{lower+1,lower,upper,true},
{upper,lower,upper,true},
{upper+1,lower,upper,false}, };
}
}

六、TestNG传递参数1的更多相关文章

  1. pyspider示例代码六:传递参数

    传递参数 示例一 #!/usr/bin/env python # -*- encoding: utf- -*- # vim: ts= sts= ff=unix fenc=utf8: # Created ...

  2. 七、TestNG传递参数2

    数据提供者本身可以接受两个类型的参数:Method和ITestContext 在创建@DataProvider方法是可以有四种格式如图: 第一种在上一篇中有学到 1-Methode参数使用 @Data ...

  3. Jenkins参数化构建(一)之 Maven Command Line传递TestNG构建参数

    1. Maven使用 -D参数名称 将参数传递至所运行项目 Maven指定TestNg.xml文件 clean test -DsuiteXmlFile=src/main/resources/testn ...

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

    当需要测试的方法含有参数时,可以通过@Parameters 注解给该方法传递参数. 比如下面这个类,要调用whoami则必须写一个main函数,然后在main函数中调用该函数,并传入参数,使用Test ...

  5. Spring MVC(六)--通过URL传递参数

    URL传递参数时,格式是类似这样的,/param/urlParam/4/test,其中4和test都是参数,这就是所谓的Restful风格,Spring MVC中通过注解@RequestMapping ...

  6. Delphi过程函数传递参数的八种方式

    今天一同事问我为什么有些过程函数里面有Var而有些没有,不解,遂到网上百度,得解.快哉,快哉. 在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out.另一种不加修饰符的为默认按值传 ...

  7. 【WebApi系列】详解WebApi如何传递参数

    WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...

  8. Delphi过程函数传递参数的几种方式

    Delphi过程函数传递参数的几种方式  在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out. 另一种不加修饰符的为默认按值传递参数. 一.默认方式以值方式传递参数 proced ...

  9. Activity传递参数——传递自定义数据类型

    一.新建一个空的工程 二.在主界面中添加一个按钮 三.新建一个空的activity,并命名为TheAty 四.新建一个user类 //注意这里要实现Serializable,不然在传递参数时会出错 p ...

随机推荐

  1. Android10_原理机制系列_Binder机制

    前言 Binder 从java到c++到kernel,涉及的内容很多,很难在一篇文章中说清楚.这篇主要是自我记录,方便后续查询并拆分总结的. 因为涉及的的确非常多,不能面面俱到,所以可能一些地方感觉比 ...

  2. CSS @property - 实验性

  3. 想换4K显示器了?那你搞懂啥是4K了吗?

    前言 我们在科技资讯以及电脑显示器.数字电视等电子产品的宣传语中,经常能够看见4K的字样.最近,B站(哔哩哔哩)升级了HTML5播放器和视频云等相关服务,为广大用户提供了超高清(UHD: Ultra ...

  4. 如何将多个网页合并成一个PDF文件

    pdfFactory是一款PDF虚拟打印软件,但与其他虚拟打印机软件不同的是,它使用起来更加简单高效.由于无需Acrobat就能生成Adobe PDF文件,它可以帮助用户在系统没有连接打印机的情况下, ...

  5. 视频剪辑软件Camtasia的快捷键大全

    今天来给大家介绍一下Camtasia快捷键的相关内容,Camtasia也是一个十分好用的电脑屏幕录制与视频剪辑制作软件了,可能有些朋友用过,毕竟它在视频录制与制作上确实比较好用. 首先在菜单栏中点击& ...

  6. guitar pro系列教程(七):Guitar Pro丰富的演奏技巧

    这一章,我们来讲guitar pro的演奏技巧 上一章节我们了解了Guitar Pro的音轨菜单,对于玩吉他的小伙伴肯定比较想要了解其的演奏方面的技巧,毕竟我们使用这款软件就是希望自己在吉他方面有更多 ...

  7. Docker-maven-plugin + Dockerfile + Arthas实现应用诊断

    一.前言 我们的微服务响应生产环境出现一个功能响应时间过慢,对Prometheus监控 Http Request进行分析发下该功能调用的后端接口响应时间平均在30秒以上,分析源码接口有mysql查询. ...

  8. 【移动自动化】【五】常用API

    常用API click: 点击 sendKeys: 输入内容 swipe: 滑动 TouchAction:这也是手势操作 github https://github.com/wangxiao9/app ...

  9. 企业安全06-Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

    CVE-2017-5645 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645) 一.漏洞原理 Apache Log4j是一个用于Java的日志记录库,其支持启动 ...

  10. MSSQL 2014数据库Alwayson下日志过大,压缩日志的处理方法

    USE [{数据库名称}] DECLARE @bakfile nvarchar(100) SET @bakfile='E:\DbLogs\log_bak_'+CONVERT(nvarchar(8),G ...