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月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...
随机推荐
- IT兄弟连 Java语法教程 流程控制语句 经典案例
使用continue忽略本次循环剩下的语句 continue的功能和break有点类似,区别是continue只是忽略本次循环剩下的语句,接着开始下一次循环,并不会终止循环:而break则是完全终止循 ...
- pixijs shader fade 从左到有右淡入 从下到上淡入效果
pixijs shader fade 从左到有右淡入 从下到上淡入效果 const app = new PIXI.Application({ transparent: true }); doc ...
- clientHeight—scrollHeight—offsetHeight三者的区别
clientHeight,scrollHeight,offsetHeight 这三个dom属性有时让人觉得相似但又不相似 以前对它们的理解也有一些模糊,现在总结一下,方便以后复习 clientHeig ...
- 数据库——SQL-SERVER练习(3)数据更新 视图
(1). 将一个新学生记录(学号:95020:姓名:陈冬:性别:男:所在系:IS:年龄:18岁)插入到Student表中.(注意, 学号是主码不允许重复,一个学号只能插入一次,学号是5位数,不要用书 ...
- 为Dynamics CRM注释的图片附件做个预览功能
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复163或者20151017可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! Dynamics CRM中注释可 ...
- PHP-RPM 安装指南(亲测有用)
小注:此教程可能有很多弯路,但是最终是肯定安装成功了的,一个问题就是刚开始安装编译的指令版本好像不对,但是后面纠正过来了,但是此教程一共遇到了 十多个问题,也一并解决了,具有一定的借鉴意义,还有( ...
- python 逐行读取txt文件
逐行读取txt文件 path = r'D:\123456\1.txt'with open(path, 'r', encoding='utf-8') as f: for line in f: ...
- java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys.
创建Spring Cloud Sleuth对应Zipkin服务,引入依赖: <dependency> <groupId>io.zipkin.java</groupId&g ...
- vue 表格组件 有事件交互(二)
04==>v-if下面可以嵌套 同级的 v-if 和v-node如下若是第一个v-if没有下面的就不可能显示出来的. <span v-if="!single" @cli ...
- vue--实现跑马灯效果
<div id="app"> <input type="button" value="开始" @click="l ...