代码执行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()之类的方法也没去了解过,倒也没遇到什么大问题.最近因为需求要求 ...
随机推荐
- 【转】linux 查看哪些进程用了swap
转自:http://blog.csdn.net/xiangliangyu/article/details/8213127 如果系统的物理内存用光了,则会用到swap.系统就会跑得很慢,但仍能运行;如果 ...
- Linux架构--------Rsync守护进程推和拉
一.Rsync基本概述 rsync是一款开源.快速.多功能.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于Unix/linux/Windows等多种操作系统平台. 二.Rsy ...
- 包、time、datetime、hashlib和hmac、request、re
目录 包 包的特点 time模块 datetime模块 hashlib模块和hmac模块 hmac密钥(加盐) typing模块 request模块 正则模块 以下必须得记住 哪些做了解 包 包,这里 ...
- css----动画(图片无限放大缩小)
先给大家推荐animate.css库,里面有一些效果很不错的过度样式,不想自己写的也可以直接安装这个库来使用,如果不想安装这个库也可以去https://daneden.github.io/animat ...
- 【SaltStack官方版】—— job management
JOB MANAGEMENT New in version 0.9.7. Since Salt executes jobs running on many systems, Salt needs to ...
- LeetCode--072--编辑距离(python)
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符示例 1: 输入: ...
- LTE系统时延及降低空口时延的4种方案
转载:https://rf.eefocus.com/article/id-LTE%20delay 对于移动通信业务而言,最重要的时延是端到端时延, 即对于已经建立连接的收发两端,数据包从发送端产生,到 ...
- C#与.NET Framework c#编程语言,和java是一样的。(c#,java) -->javaweb,asp.net
- java浅克隆和深克隆,序列化和反序列化实现深克隆(封装序列化和反序列化操作)
本篇博客内容: 一.浅克隆(ShallowClone)和深克隆(DeepClone) 二.序列化和反序列化实现深克隆 三.封装序列化和反序列化操作 ObjectOutputStream + 内存流By ...
- shell时间转换脚本
字符串转换为时间戳: time2utc #!/bin/sh Time=$ date -d "${Time}" '+%s' 时间戳转日期字符串 utc2time #!/bin/sh ...