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. Java项目读取resources资源文件路径那点事

    今天在Java程序中读取resources资源下的文件,由于对Java结构了解不透彻,遇到很多坑.正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径, ...

  2. 超级无敌详细使用ubuntu搭建hadoop完全分布式集群

    一.软件准备 安装VMware 下载ubuntu镜像(阿里源ubuntu下载地址)选择自己适合的版本,以下我使用的是18.04-server版就是没有桌面的.安装桌面版如果自己电脑配置不行的话启动集群 ...

  3. Apache Flink Dashboard未授权访问导致任意Jar包上传漏洞

    漏洞危害 攻击者无需Flink Dashboard认证,通过上传恶意jar包 csdn-[漏洞复现]Apache Flink任意Jar包上传导致远程代码执行 freebuf-Apache Flink ...

  4. SQL注入学习-Dnslog盲注

    1.基础知识 1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ...

  5. NO.A.0004——Git私有服务器部署/makefile方式/本地与Git服务器代码交换

    一.在linux服务器上搭建私有Git服务程序:make编译方式 远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改.GitHub就是一个免费托管开源代码的远程仓库.但是对于某 ...

  6. FL Studio 插件使用技巧——Fruity Reeverb 2(下)

    了解大教堂声场的特点 上节教程中我们说到,混响具有营造空间感的作用.当我们想要在FL Studio软件中用Fruity Reeverb 2 插件有目标地模仿一个特定空间的环境时,我们需要充分了解该空间 ...

  7. 关于GoldWave为Vegas制作音频交叉淡化特效的教程分享

    在Vegas里对音频交叉淡化的处理,是通过将两段音频交叠.调整交叠部分的音量.选取交叉淡化类型这三步来实现的,许多步骤是在音频轨道拖动音量线来实现的,操作上不够灵敏精细.其实,单就音频的交叉淡化处理, ...

  8. 【VUE】3.表单操作

    1. Form组件渲染 1. components -> 新增组件Form.vue <template> <div>表单验证</div> </templ ...

  9. lca(lowestCommonAncestor)

  10. Java基础教程——方法引用

    方法引用 Lambda表达式的代码,是否可以再简洁?--方法引用 对象/类名::方法名 参数都不用写明. import java.util.function.Consumer; public clas ...