TestNg之XMl形式实现多线程测试
为什么要使用多线程测试?
在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试。
关于多线程并行测试
TestNG中实现多线程并行执行,可以通过以下几种方法:
- @Test注解的形式
- Xml文件的配置的形式
本文着重介绍下以xml形式实现多线程测试的方法,来让我们开始吧
如何实现?
1、编写测试类
package com.testng.demo;
import org.testng.annotations.Test;
public class MultiThreadedByXml {
@Test
public void test1() {
System.out.println("Thread id is " + Thread.currentThread().getId());
}
@Test
public void test2() {
System.out.println("Thread id is " + Thread.currentThread().getId());
}
@Test
public void test3() {
System.out.println("Thread id is " + Thread.currentThread().getId());
}
@Test
public void test4() {
System.out.println("Thread id is " + Thread.currentThread().getId());
}
@Test
public void test5() {
System.out.println("Thread id is " + Thread.currentThread().getId());
}
}
2、编写testng.xml文件
在<suite>标签中用parallel和thread-count两个属性声明多线程:parallel代表级别,thread-count代表最大并发线程数。
3、tests级别测试
不同的test标签(tag)下的用例可以在不同的线程下执行
配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多线程测试" parallel="tests" thread-count="2">
<test name="threadTest1">
<classes>
<class name="com.testng.demo.MultiThreadedByXml"/>
</classes>
</test>
</suite>
通过xml运行效果如下:

相同的test标签(tag)下的用例只能在同一个线程中去执行
配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多线程测试" parallel="tests" thread-count="2">
<test name="threadTest1">
<classes>
<class name="com.testng.demo.MultiThreadedByXml"/>
<class name="com.testng.demo.MultiThreadedByXml"/>
</classes>
</test>
</suite>
通过xml运行效果如下:

4、methods级别测试
所有用例在不同的线程下去执行
配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多线程测试" parallel="methods" thread-count="2">
<test name="threadTest1">
<classes>
<class name="com.testng.demo.MultiThreadedByXml"/>
</classes>
</test>
</suite>
通过xml运行效果如下:

5、classs级别测试
相同的classes标签下的用例在同一个线程中执行
配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多线程测试" parallel="classes" thread-count="2">
<test name="threadTest1">
<classes>
<class name="com.testng.demo.MultiThreadedByXml"/>
</classes>
</test>
</suite>
通过xml运行效果如下:

不同的classes标签下的用例可以在不同的线程下执行
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多线程测试" parallel="classes" thread-count="2">
<test name="threadTest1">
<classes>
<class name="com.testng.demo.MultiThreadedByXml"/>
</classes>
</test>
<test name="threadTest2">
<classes>
<class name="com.testng.demo.MultiThreadedByXml2"/>
</classes>
</test>
</suite>
通过xml运行效果如下:

注意:thread-count: 代表了最大并发线程数,xml文件配置这种方式不能指定线程池,只有方法上才可以指定线程池
本文完,还不动手试一试········
TestNg之XMl形式实现多线程测试的更多相关文章
- TestNG(十五)xml文件实现多线程测试
package com.course.testng.thread; import org.testng.annotations.Test; public class ThreadOnXml { @Te ...
- testng入门教程12 TestNG执行多线程测试
testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...
- TestNG多线程测试-注解方式实现
用@Test(invocationCount = x,threadPoolSize = y)声明,invocationCount表示执行次数,threadPoolSize表示线程池大小. packag ...
- TestNG 多线程测试
TestNG以注解的方式实现多线程测试 import org.testng.annotations.Test; public class TreadDemo { // invocationCount ...
- testng的xml文件说明(TestNG DTD)
testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- jenkins通过maven指定testng的xml文件,并给testng代码传参
1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...
- Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告
from:http://blog.csdn.net/bwgang/article/details/7865184 1.在Ant中设置如下: <target name="run_test ...
- VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式
[1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...
随机推荐
- Linux中的buff/cache内存
我们用free.top等相关能够查询到当前内存的使用情况的命令时,总会有一个buff/cache让我们很困惑. buffer 即写如磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘. ca ...
- Java生鲜电商平台-B2B生鲜的互联网思维
Java生鲜电商平台-B2B生鲜的互联网思维 在互联网高速发展的今天,为我们的生活带来了众多便利.然而互联网从早期的萌芽状态到现在妇孺皆知,它的崛起速度远远超乎世人的想象.人们开始关注互联网并且研究它 ...
- Python爬取猪肉价格网并获取Json数据
场景 猪肉价格网站: http://zhujia.zhuwang.cc/ 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获 ...
- Android开源日志框架xlog
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/144 xlog的优点 在开发过程中,避免不了要使用日志组件 ...
- WindowServer优化
Windows Server 2016 禁止自动更新 1. 打开cmd,输入sconfig,出现如下图: 2. 输入5回车,在输入m回车,完成关闭自动更新.
- Gradle在Android中的简单使用
Gradle在Android中简单的使用 还望支持个人博客站:http://www.enjoytoday.cn Android Studio 使用gradle进行工程构建,为了更好的了解整个andro ...
- Go切片去掉重复元素
1.Go切片去掉重复元素 如果传入的是string类型: //slice去重 func removeRepByMap(slc []string) []string { result := []stri ...
- 有 va_arg宏 中数组下标-1 引发的思考 - C 语言中内存模型
va_arg宏,是头文件 stdarg.h 中定义的,获取可变参数的当前参数. #define va_arg(list, mode) ((mode*)(list+=sizeof(mode)))[-1] ...
- Python—序列化和反序列化模块(json、pickle和shelve)
什么是序列化 我们把对象(或者变量)从内存中变为可存储或者可传输的过程称为序列化.在python中为pickling,在其他语言中也被称之为serialization,marshalling,flat ...
- K8S 1.14.6中,将kubeadm集群证书颁发时间延长到100年
更改两个文件,重新编译kubeadm. 1,D:\kubernetes-1.14.6\staging\src\k8s.io\client-go\util\cert\cert.go // NewSelf ...