46-pytest-分布式插件pytest-xdist使用

简介: 46-pytest-分布式插件pytest-xdist使用

前言

  • 本篇来学习下在pytest中分布式执行测试用例,以节省测试时间。

安装插件

pip install pytest-xdist

分布式用例设计原则

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

使用示例

  • 顺序执行
# -*- coding: utf-8 -*-
# @Time    : 2022/11/26
# @Author  : 大海
import time
import pytest
def test_01():
    print('case 1')
    time.sleep(2)
    assert 1 == 1
def test_02():
    print('case 2')
    time.sleep(2)
    assert 1 == 1
def test_03():
    print('case 3')
    time.sleep(2)
    assert 1 == 1
def test_04():
    print('case 4')
    time.sleep(2)
    assert 1 == 1
def test_05():
    print('case 5')
    time.sleep(2)
    assert 1 == 1
if __name__ == '__main__':
    # 顺序执行
    pytest.main(['-s', 'test_78.py'])

  • 并行执行:加-n参数后面数字是并行数
# -*- coding: utf-8 -*-
# @Time    : 2022/11/26
# @Author  : 大海
import time
import pytest
def test_01():
    print('case 1')
    time.sleep(2)
    assert 1 == 1
def test_02():
    print('case 2')
    time.sleep(2)
    assert 1 == 1
def test_03():
    print('case 3')
    time.sleep(2)
    assert 1 == 1
def test_04():
    print('case 4')
    time.sleep(2)
    assert 1 == 1
def test_05():
    print('case 5')
    time.sleep(2)
    assert 1 == 1
if __name__ == '__main__':
    # 并行执行 加-n参数后面数字是并行数
    pytest.main(['-s', 'test_78.py', '-n=4', '--html=report.html', '--self-contained-html'])

测试报告

按一定顺序执行

  • pytest-xdist默认是无序执行的,可以通过 --dist 参数来控制顺序
  • –dist=loadscope

将按照同一个模块module下的函数和同一个测试类class下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行

  • –dist=loadfile

按照同一个文件名来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行

相关文章
|
7月前
|
消息中间件 存储 负载均衡
分布式消息传递新时代:深入了解RabbitMQ_sharding插件的精髓【RabbitMQ 八】
分布式消息传递新时代:深入了解RabbitMQ_sharding插件的精髓【RabbitMQ 八】
152 0
|
测试技术 Python
Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用
Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用
661 0
|
安全 测试技术 索引
Pytest系列(17)- pytest-xdist分布式测试的原理和流程
Pytest系列(17)- pytest-xdist分布式测试的原理和流程
494 0
|
负载均衡 监控 测试技术
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
204 0
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
|
测试技术 数据库
【pytest】case多执行慢?pytest-xdist分布式测试,了解一下
【pytest】case多执行慢?pytest-xdist分布式测试,了解一下
【pytest】case多执行慢?pytest-xdist分布式测试,了解一下
|
缓存 测试技术
Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
301 0
Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
22天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
65 5
|
25天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
54 8
|
1月前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
58 16