代码执行testng的几种方式
一、指定test class
Test class FirstTest
package cas.eric; import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class FirstTest {
@Test
@Parameters({"name"})
public void test_one(@Optional("zhangsan") String name){
System.out.println("test one");
//如果变量name有值则打印传入的name值,如果没有则打印默认值zhangsan
System.out.println(name);
}
}
执行testng的class:TestngRun
package cas.eric; import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class TestngRun { public static void main(String[] args) {
//新建一个XmlSuite对象
XmlSuite xmlSuite = new XmlSuite();
//指定xmlsuite 名称
xmlSuite.setName("xml test suite");
//指定name 参数值
Map<String,String> parameters = new HashMap<>();
parameters.put("name", "lisi");
//xmlsuite添加parameters
xmlSuite.setParameters(parameters);
//新建一个XmlTest对象
XmlTest xmlTest = new XmlTest(xmlSuite);
//设置xmltest 名称
xmlTest.setName("xml test");
//新建xmlclass 对象
List<XmlClass> classes = new ArrayList<>();
String packageName = TestngRun.class.getPackage().getName();
classes.add(new XmlClass(packageName+".FirstTest"));
xmlTest.setXmlClasses(classes);
List<XmlSuite> suites = new ArrayList<>();
suites.add(xmlSuite);
TestNG testNG = new TestNG();
testNG.setXmlSuites(suites);
testNG.run();
} }
打印结果:
test one
lisi
二、指定xml文件
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="test">
<classes>
<class name="cas.eric.FirstTest"></class>
</classes>
</test>
</suite>
TestngRun.java
package cas.eric; import org.apache.commons.io.FileUtils;
import org.testng.TestNG;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; public class TestngRun { public static void main(String[] args) {
try {
String xmlName = "testng.xml";
//读取文件到流
InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
//新建一个文件对象
File xmlFile = new File("name.xml");
//拷贝流的内容到新文件中
FileUtils.copyInputStreamToFile(inputStream,xmlFile);
TestNG testNG = new TestNG();
List<String> suites = new ArrayList<>();
//添加文件到suite
suites.add(xmlFile.getAbsolutePath());
testNG.setTestSuites(suites);
testNG.run();
}
catch (IOException e) {
e.printStackTrace();
}
} }
执行结果:
test one
zhangsan
打印了默认的name:zhangsan,那使用xml方式执行的时候如何传入参数呢
三、执行xml文件以及自定义传参
TestngRun.java
package cas.eric; import org.testng.TestNG;
import org.testng.xml.SuiteXmlParser;
import org.testng.xml.XmlSuite;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class TestngRun { public static void main(String[] args) {
String xmlName = "testng.xml";
InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
TestNG testNG = new TestNG();
SuiteXmlParser suiteXmlParser = new SuiteXmlParser();
List<XmlSuite> suites = new ArrayList<>();
XmlSuite xmlSuite = suiteXmlParser.parse(xmlName, inputStream, true);
suites.add(xmlSuite);
Map<String,String> parameters = new HashMap<>();
parameters.put("name", "wangwu");
xmlSuite.setParameters(parameters);
testNG.setXmlSuites(suites);
testNG.run(); } }
执行结果:
test one
wangwu
当然也可以自定义test class
SecondTest.java
package cas.eric; import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class SecondTest { @Test
@Parameters({"name"})
public void test_two(@Optional("mike") String name){
System.out.println("test two");
//如果变量name有值则打印传入的name值,如果没有则打印默认值zhangsan
System.out.println(name);
}
}
TestngRun.java
package cas.eric; import org.testng.TestNG;
import org.testng.xml.SuiteXmlParser;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest; import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class TestngRun { public static void main(String[] args) {
String xmlName = "testng.xml";
InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
TestNG testNG = new TestNG();
SuiteXmlParser suiteXmlParser = new SuiteXmlParser();
List<XmlSuite> suites = new ArrayList<>();
XmlSuite xmlSuite = suiteXmlParser.parse(xmlName, inputStream, true);
List<XmlTest> xmlTestList = xmlSuite.getTests();
XmlTest xmlTest = xmlTestList.get(0);
List<XmlClass> xmlClassList = xmlTest.getXmlClasses();
String packageName = TestngRun.class.getPackage().getName();
XmlClass xmlClass = new XmlClass(packageName+".SecondTest");
xmlClassList.add(xmlClass);
suites.add(xmlSuite);
Map<String,String> parameters = new HashMap<>();
parameters.put("name", "wangwu");
xmlSuite.setParameters(parameters);
testNG.setXmlSuites(suites);
testNG.run(); } }
运行结果:
test one
wangwu
test two
wangwu
代码执行testng的几种方式的更多相关文章
- C#执行异步操作的几种方式比较和总结
C#执行异步操作的几种方式比较和总结 0x00 引言 之前写程序的时候在遇到一些比较花时间的操作例如HTTP请求时,总是会new一个Thread处理.对XxxxxAsync()之类的方法也没去了解过, ...
- Shell脚本中执行mysql的几种方式(转)
Shell脚本中执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用 ...
- linux 中的命令是什么?执行命令的几种方式?如何自己创建命令?
linux 中的命令是什么? 命令是可执行的二进制程序 执行命令的几种方式? ./test.sh #相对路径执行 /data/test.sh ...
- 转 mysql mysql命令行中执行sql的几种方式总结
https://www.jb51.net/article/96394.htm 1.直接输入sql执行 MySQL> select now(); +---------------------+ | ...
- PHP中通过bypass disable functions执行系统命令的几种方式
原文:http://www.freebuf.com/articles/web/169156.html 一.为什么要bypass disable functions 为了安全起见,很多运维人员会禁用PH ...
- TestNG入门教程-12-Java代码执行testng.xml和失败后重跑
前面我们都在IDEA上右键testng.xml文件来运行testng用例,这个在编写测试用例过程是 可以这么做,但是,如果测试用例写完了,也是这么做吗?有没有什么方法,例如自动化去实现.测试脚本维护后 ...
- Centos上执行Shell的四种方式
注意:我这里说的shell脚本是Bash Shell,其他类型的shell脚本不保证有效 1,方式一:进入shell文件所在目录 ./my.sh执行 ./my.sh ./的意思是说在当前的工作目录下执 ...
- bat批处理执行python 的几种方式
第一种方式:@echo off C: cd C:\Users\administrator\Desktopstart python apidemo.py exit第二种方式: start cmd /K ...
- C#执行异步操作的几种方式比较和总结(转发:https://www.cnblogs.com/durow/p/4826653.html)
0x00 引言 之前写程序的时候在遇到一些比较花时间的操作例如HTTP请求时,总是会new一个Thread处理.对XxxxxAsync()之类的方法也没去了解过,倒也没遇到什么大问题.最近因为需求要求 ...
随机推荐
- Thinking in Annotation
Thinking in Java这本书很久前就购买了,打算有时间看一下,因为自己的时间被自己安排的紧张,也没时间看书.黄师傅上次课程讲到了注解的使用和反射的使用,今天打算学习一下注解.该文章参考Thi ...
- C#索引器2 字符串作为索引号
6.索引器 字符串作为索引号 public class Demo { private Hashtable name = new Hashtable(); public string this[st ...
- Linux下用命令查看CPU ID以及厂家等信息
Linux下用命令查看CPU ID // 获得CPU IDdmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}' // 获得磁盘IDfdi ...
- webpack 零基础到工程实战(1)
webpack resolve:resolve 配置是帮助 webpack 查找依赖模块resolve.alias 是最常用的配置,通过设置 alias 可以帮助 webpack 更快查找模块依赖,而 ...
- 洛谷 P4902 乘积 (约数筛,前缀和(积))
洛谷P4902乘积 题意简述: 给 $ t $ 组 $ (a,b) $ 求: $ \prod_{i=A}^{B}\prod_{j=1}^{i}(\frac{i}{j})^{\lfloor \frac{ ...
- mongdb 学习
一:安装1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包2.安装mongodb3. cmd 命令切换到安装目录bin 下面 mongod --dbp ...
- ES6数据结构Set、Map
一.Set数据结构 Set是无序的不可重复的多个value的集合体,Set结构是类似于数组结构,但是Set中的值都不能重复 常用的属性和方法 size:返回set实例的成员总数 add():添加某个值 ...
- 面试题常考&必考之--js中的call()和apply()
apply: 接受两个参数,第一个参数是要绑定给this的值,第二个参数是一个参数数组.当第一个参数为null.undefined的时候,默认指向window. call: 第一个参数是要绑定给thi ...
- 链接收藏:bullet物理引擎不完全指南
这个也是博客园的文章,编辑得也很好,就不copy了,结尾还有PDF: https://www.cnblogs.com/skyofbitbit/p/4128347.html 完结
- Java——API文档
Sun下载JDK--解压缩--javadoc文件(Constuctor Summary[构造方法]+Method Summary[方法]) [Object] Object类是所有Java类的根 ...