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月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...
随机推荐
- 基于 EntityFramework 生成 Repository 模式代码
借助 WeihanLi.EntityFramework 实现简单的 Repository Intro 很多时候一些简单的业务都是简单的增删改查,动态生成一些代码完成基本的增删改查,而这些增删改查代码大 ...
- Web前端——css
css 推荐的样式编写顺序: Positioning:定位 Box model:盒子模型.大小等 Typographic:文字系列.排印等 Visual:可视化.背景等 Misc:其它混杂模式 居中 ...
- windows环境下安装配置MongoDB
版本选择MongoDB的版本命名规范如:x.y.z: y为奇数时表示当前版本为开发版,如:2.3.0.2.1.1: y为偶数时表示当前版本为稳定版,如:2.0.1.2.2.0: 目前官网上最新的版本为 ...
- length()返回当前字符串的字符个数
package seday01;/** * int length() * 返回当前字符串的字符个数 * @author xingsir * */public class LengthDemo { pu ...
- XAF-从业务类继承 (XPO)
In this lesson, you will learn how to implement business classes for your application using the Busi ...
- CAD总记不住?设计达人给你支招,最强口诀40条玩转设计
绘图界有这样一个准则:绘图越快,玩的越6 相反的,CAD玩的很6 ,你的绘图效率一定不会差到哪里去,虽然不能说的太绝对,但你就操作如果玩转,一定你就操作能给你的绘图带来很多效率的提升. 当然后面就你就 ...
- ES6箭头函数-2
以下来文字来自阮大神所著书籍摘记.为了加深记忆.本人就手动敲了一遍(相关代码本人也执行过,可保证运行通过.) 箭头函数注意事项: 1) 函数体内的this对象就是定义时所在的对象,而不是使用时所在的对 ...
- 挑战常规 -- 为什么不要再用cookie作为储存?
不要使用cookie当存储 Cookie 是什么? Cookie 由浏览器储存在本地,每次访问目标网址会带上的请求头,服务器可以通过Set-Cookie响应头设置Cookie. Cookie的用途 由 ...
- react.js父子组件通信
这里通过todolist的功能来说明 父组件: import React,{ Component,Fragment } from 'react'; import TodoItem from './To ...
- LeetCode——Delete Duplicate Emails(巧用mysql临时表)
Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique ...