pytest多进程/多线程执行测试用例

本文介绍了如何使用pytest-xdist进行多进程测试,详细阐述了其工作原理和执行流程,以及pytest-parallel插件进行多线程执行用例的方法。通过比较两者,pytest-parallel在功能和平台支持上更优,适用于线程安全的测试场景。
摘要由CSDN通过智能技术生成

前言:

  • 实际项目中的用例数量会非常多,几百上千;如果采用单进程串行执行的话会非常耗费时间。假设每条用例耗时2s,1000条就需要2000s ≈ \approx 33min;还要加上用例加载、测试前/后置套件等耗时;导致测试执行效率会相对低。
  • 想象一下如果开发改动一块代码,我们需要回归一下,这时候执行一下自动化用例需要花费大半个小时或者好几个小时的时间,这是我们无法容忍的。
  • 为了节省项目测试时间,需要多个测试用例同时并行执行;这就是一种分布式场景来缩短测试用例的执行时间,提高效率。

分布式执行用例的原则

  • 用例之间是相互独立的,没有依赖关系,完全可以独立运行;
  • 用例执行没有顺序要求,随机顺序都能正常执行;
  • 每个用例都能重复运行,运行结果不会影响其他用例。

项目结构
在这里插入图片描述
测试脚本

# test1/test_1.py
import time

def test1_test1():
	time.sleep(1)
	assert 1 == 1, "1==1"


def test1_test2():
	time.sleep(1)
	assert 1 == 1, "1==1"
	
	
class TestDemo1:
	def test_inner_1(self):
		time.sleep(1)
		assert 1 == 1, "1==1"


class TestDemo2:
	def test_inner_2(self):
		time.sleep(1)
		assert 1 == 1, "1==1"
# test1/inner/test_3.py
import time

def test3_test1():
	time.sleep(1)
	assert 1 == 1, "1==1"


def test3_test2():
	time.sleep(1)
	assert 1 == 1, 
pytest中,可以使用pytest-parallel插件来支持多线程执行用例。该插件可以在mac或linux系统中运行,并通过设置--workers参数来指定线程数。然而,在Windows系统中,pytest-parallel只支持单个进程执行,即--workers参数只能设置为1。\[1\] 另外一个可选的插件是pytest-xdist,它支持多进程执行用例pytest-xdist可以通过独特的测试执行模式扩展pytest,实现测试运行的并行化。它可以利用多个CPU或主机来加速测试执行,节省自动化回归测试的时间。此外,pytest-xdist还支持跨平台覆盖,可以在不同的Python解释器或不同的平台上并行运行测试。\[2\] 在使用多线程执行用例时,可能会遇到fixture函数执行多次的问题。特别是当fixture函数的范围设置为session时,会导致fixture函数在每个线程中都执行,从而导致一些问题,比如token过期。为了解决这个问题,可以考虑将fixture函数的范围设置为其他级别,如function或class,以确保在测试用例的session中仅执行一次。\[3\] #### 引用[.reference_title] - *1* [11、pytest多线程多进程执行用例](https://blog.csdn.net/weixin_43877527/article/details/128535493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [接口测试多线程执行用例-Pytest-xdist](https://blog.csdn.net/oqqChin12/article/details/127489055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值