为什么要使用多线程测试?

在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试。

关于多线程并行测试

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形式实现多线程测试的更多相关文章

  1. TestNG(十五)xml文件实现多线程测试

    package com.course.testng.thread; import org.testng.annotations.Test; public class ThreadOnXml { @Te ...

  2. testng入门教程12 TestNG执行多线程测试

    testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...

  3. TestNG多线程测试-注解方式实现

    用@Test(invocationCount = x,threadPoolSize = y)声明,invocationCount表示执行次数,threadPoolSize表示线程池大小. packag ...

  4. TestNG 多线程测试

    TestNG以注解的方式实现多线程测试 import org.testng.annotations.Test; public class TreadDemo { // invocationCount ...

  5. testng的xml文件说明(TestNG DTD)

    testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...

  6. Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)

    1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...

  7. jenkins通过maven指定testng的xml文件,并给testng代码传参

    1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...

  8. Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告

    from:http://blog.csdn.net/bwgang/article/details/7865184 1.在Ant中设置如下: <target name="run_test ...

  9. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

随机推荐

  1. activiti5初识

    因工作需要,接手新的项目,其中用到了activiti实现的工作流,特意去大致学习下,特此记录下. 1.acticiti5框架说明及表结构介绍 Activiti5工作流引擎框架: 它实际上是一个java ...

  2. python学习第一天第二天总结

    变量赋值 1, 变量由字⺟, 数字,下划线搭配组合⽽成 2, 不可以⽤数字开头,更不能是全数字 3,不能是pythond的关键字, 这些符号和字⺟已经被python占⽤, 不可以更改 4,不要⽤中⽂ ...

  3. 【linux运维】linux系统上忘记密码如何操作

    目录 红帽系统忘记密码操作 红帽系统设置ip,主机名 centos系统忘记密码操作 一.红帽系统忘记密码操作 1)再出现以下界面后按键盘e键 2)进入以下界面后,再次按e键 3)使用上下键选择第2项或 ...

  4. js使用“toFixed( )”保留小数点后两位

    例如: var a = 1.335; alert(a.toFixed(2)) // IE 1.34 //chorme 1.33 若a为字符串,则需要先转换为Number类型 如: n = Number ...

  5. MySQL-8.0.x DDL 原子性

    [1.mysql-8.0.x 新特性之 DDL 原子性] 在没有 DDL 原子性之前 DBA 对 DDL 语句基本上是无能为力的,比如说 DDL 执行的过程中停电了,这下就只有天知道了.实现上最终的愿 ...

  6. jquery 图片缩放插件使用

    https://cdn.bootcss.com/d3-transition/1.1.1/d3-transition.js http://www.jq22.com/jquery-info9291

  7. WPF自定义控件之图片控件 AsyncImage

    AsyncImage 是一个封装完善,使用简便,功能齐全的WPF图片控件,比直接使用Image相对来说更加方便,但它的内部仍然使用Image承载图像,只不过在其基础上进行了一次完善成熟的封装 Asyn ...

  8. Nginx反向代理实现负载均衡以及session共享

    随着社会的发展和科技水平的不断提高,互联网在人们日常生活中扮演着越来越重要的角色,同时网络安全,网络可靠性等问题日益突出.传统的单体服务架构已不能满足现代用户需求.随之而来的就是各种分布式/集群式的服 ...

  9. 6.python3实用编程技巧进阶(一)

    1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等于零的数据 #第一种方法,不推荐 res1 ...

  10. hi3559v100 sdk中双系统AMP架构的初步了解

    hi3559v100是海思推出的camera soc处理器.采用的是双核处理器.一个是a7,运行的linux3.18内核.一个是a17使用的是huaweiliteos操作系统,Hi3559V100 系 ...