pytest实现多进程与多线程运行超好用的插件

山海之间
山海之间
发布时间:2026-10-15| 4人浏览过
原创

本文详细介绍pytest实现并发测试的两种主流插件:pytest-parallel与pytest-xdist。重点解析pytest-parallel的多进程与多线程混合配置参数(--workers与--tests-per-worker),对比其与pytest-xdist在跨平台支持及功能上的差异,并针对Windows系统限制给出选型建议。

前言

若需实现用例的分布式执行,测试用例的设计必须严格遵循以下规范:

1、各用例间需保持完全独立; 2、禁止用例a依赖用例b的执行结果; 3、用例执行无需遵循特定先后顺序; 4、每个用例均需具备独立运行及重复运行的能力,且互不干扰。这与人工测试场景类似,用例相互独立,可随机分配给不同测试人员,不存在依赖关系或执行顺序限制。

一、pytest-parallel

安装方法:pip install pytest-parallel

常用参数配置说明如下:

  • --workers=n:启用多进程运行需添加此参数,n代表进程数量,默认值为1。
  • --tests-per-worker=n:启用多线程需添加此参数,n代表线程数量。

若同时配置上述两个参数,则实现进程并行,每个进程最多包含n个线程,总线程数为进程数乘以线程数。

注意:在Windows操作系统中,进程数始终固定为1。

必须使用 if __name__ == "__main__": 结构,直接在DOS命令行运行可能会报错。

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @project : API_Service
# @File    : test_1.py
# @Date    : 2021/6/15 3:07 下午
# @Author  : 李文良


# demo:
import pytest

def test_01():
    print('测试用例1操作')

def test_02():
    print('测试用例2操作')

def test_03():
    print('测试用例3操作')

def test_04():
    print('测试用例4操作')


def test_05():
    print('测试用例5操作')


def test_06():
    print('测试用例6操作')


def test_07():
    print('测试用例7操作')


def test_08():
    print('测试用例8操作')

if __name__ == "__main__":
    pytest.main(["-s", "test_1.py",'--workers=2', '--tests-per-worker=4'])

二、pytest-xdist

安装方法:pip install pytest-xdist

该插件不支持多线程功能。

常用参数配置如下:

  • -n=*:*代表进程数量。

多CPU并行执行用例时,直接添加-n参数即可,后续num参数指定并行数量,例如将num设置为3。

  • -n auto:自动侦测系统中的CPU核心数量。
  • -n num:指定运行测试的处理器进程数。

三、对比说明

相较于pytest-xdist,pytest-parallel更为易用且功能支持更全面。

pytest-xdist不支持多线程,而pytest-parallel支持Python 3.6及以上版本。若需在Linux或Mac上进行多进程并发测试,需注意在Windows上该功能无效(Workers=1);若进行多线程测试,Linux/Mac/Windows平台均支持,且进程数由workers参数值决定。

pytest-parallel常用配置命令示例如下:

  • –workers (optional) *:启用多进程运行需添加此参数,*代表进程数,默认值为1。
  • –tests-per-worker (optional) *:启用多线程运行,*代表每个worker运行的最大并发线程数,默认值为1。

pytest test.py --workers 3:使用3个进程运行 pytest test.py --tests-per-worker 4:使用4个线程运行 pytest test.py --workers 2 --tests-per-worker 4:使用2个进程并行,且每个进程最多包含4个线程运行,即总共最多8个线程运行。

四、特别注意

1、pytest-parallel的workers参数在Windows系统下始终为1,在Linux和Mac下可设置为不同值。 2、启用pytest-parallel的多线程处理后,最终执行时间取决于运行时间最长的线程。 3、在Windows环境下,若需多进程请选择pytest-xdist;若需多线程请选择pytest-parallel。

至此,关于pytest实现多进程与多线程运行的插件介绍完毕。如需了解更多pytest多进程与多线程运行插件相关内容,请搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。