前言
测试圈两大主流测试框架,一个是 testng 另一个是 junit5,个人喜欢比较喜欢 testng,对于组织测试用例有很高的灵活性
invocationCount 参数
testng 中@Test
注解标明的为测试用例,Test 后可以跟上各种参数,比如 invocationCount 可以控制多线程,invocation 表示调用,即调用次数
threadPoolSize 要配合 invocationCount 使用,表示线程池大小,即是几线程
@Test(invocationCount=1, threadPoolSize=2)
使用两线程去运行一次
parallel 设置线程级别
首先我们要在 mvn 的 pom.xml 中配置 surefire 插件,具体 surefire 插件的如何结合 testng 做测试可以参考 surefire 官网,或者结合我之前写的一篇博文
https://blog.csdn.net/abcnull/article/details/106715004
由于 surefire 中可以指定运行哪个 testng.xml 测试套件(不指定默认是 testng.xml 的名字),在 testng.xml 中我们可以指定测试套件的多线程运行的运行级别
下面我指定线程并行的隔离级别是 tests,然后使用 3 线程
<suite name="WebUI Test Suite" parallel="tests" thread-count="3">
本人最常用的就是 tests 级别,那么 parallel 还有其他哪些并行级别呢?
- methods
所有@Test
测试用例都会施行多线程,对应 xml 中的 method 中 include 标签指定的测试方法,即测试用例 - tests
所有 test 标签的用例会被指定运行在一个线程里,不同 test 标签即为不同的线程 - classes
一个 class 标签即为开启一个新的线程,对应一个测试类(测试类中会有多个测试用例方法) - instances
每一个实例即为一个线程
我本人最常用的还是 tests 级别并行,实际中,我会把配置文件读取操作放在 BeforeSuite 中,然后在 BeforeTest 中做驱动初始化,因为 tests 级别并行的时候,BeforeTest 在不同线程都会执行一次,而 BeforeSuite 只会在第一个线程执行一次