代码执行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()之类的方法也没去了解过,倒也没遇到什么大问题.最近因为需求要求 ...
随机推荐
- libboost_regex 备份用时
libboost_regex-vc100-mt-s-1_57.lib //生成数据
- 常见 linux 命令
1.find find . //列出当前目录及子目录下的所有文件和文件夹 find /home -name "*.txt" //在/home目录下查找以.txt结尾的文件名或路径 ...
- Jmeter性能测试请求超时:目前遇见有三种情况
1.请求连接超时.连不上服务器.一般是因为线程太多 2.连接成功,但是读取超时.等不到服务器返回的数据,一般是这次请求查询的量很大,比如查了5度的顶点.(timeout小于server的最大等待时间) ...
- 查看PL/SQL编译时的错误信息
编译无效对象是DBA与数据库开发人员常见的工作之一.对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法. 一.当前数据库版本信息及无效对象 1.查看当前数据库版本 [sql] view pl ...
- 【NOIP2015模拟11.3】IOIOI卡片占卜
题目 K理事长很喜欢占卜,经常用各种各样的方式进行占卜.今天,他准备使用正面写着"I",反面写着"O"的卡片为今年IOI的日本代表队占卜最终的成绩. 占卜的方法 ...
- python代码执行bash命令 -- python3 cook book
python代码执行bash命令相关 -- python3 cook book refer: https://python3-cookbook.readthedocs.io/zh_CN/latest/ ...
- 线程协作之threading.Condition
领会下面这个示例吧,其实跟java中wait/nofity是一样一样的道理 import threading # 条件变量,用于复杂的线程间同步锁 """ 需求: 男:小 ...
- ASP.NET实现大文件上传和下载
总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...
- B/S上传文件夹
文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...
- 【bzoj1146】[CTSC2008]网络管理Network
题目描述: M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...