pytest-xdist:远程多主机 - 分布式运行自动化测试

简介:pytest-xdist插件使用新的测试执行模式扩展了pytest,最常用的是在多个CPU之间分发测试以加快测试执行,即

pytest -n auto

同时也是一个非常优秀的分布式测试插件,分别支持ssh和socket两种方式实现master和worker的远程通讯。需要特别注意的是rsync功能被弃用,因为它的实现在远程工作者中再现开发环境方面存在缺陷,而且没有明确的解决方案。出于这个原因,rsync计划在4.0版中删除,让团队专注于一组较小的功能。请注意,SSH和套接字服务器不是计划删除的,因为它们是execnet功能集的一部分。

测试用例分布式运行的优势:

1. 测试用例之间的运行是完全独立,没有依赖关系。

2. 既支持按顺序,也随机执行,测试用例执行不强制按照顺序执行。

3. 每个用例都可以重复执行,并且运行结果,都不会影响其他用例。

官方文档:

https://pytest-xdist.readthedocs.io/en/stable/

历史攻略:

Pytest用例自定义 - 重复、并行、串行

Pytest+Yaml 数据驱动测试用例

pytest+allure安装和使用

pytest:并行和并发运行用例

python:消息推送 - 企业微信机器人推送

让你的pytest日志更有序:配置和使用技巧

Playwright - 04:pytest并行、并发、运行浏览器兼容性测试

安装:

pip install pytest-xdist

由于SSH的方式相对写得云里雾里。本文使用socket的方式演示。

原理:开启socket服务,服务间进行信息交换和传递

下载文件:socketserver.py

https://github.com/pytest-dev/execnet/blob/master/src/execnet/script/socketserver.py

# 官网的链接是下面这个,其实是错的,会报404错误 (估计是没更新或者不维护了)
# 应该是最上面这个链接。
https://raw.githubusercontent.com/pytest-dev/execnet/master/execnet/script/socketserver.py

case源码:test_case/test_demo.py

开启服务:

python socketserver.py

使用socket远程执行:

路径不好判断的话,直接使用 ./
最好使用 -n auto 不然传递文件很慢。单个work很慢。

pytest -n auto -d --tx socket=127.0.0.1:8888 --rsyncdir ./

# 在main.py 内 这些方式可能是无效的。
pytest.main(["-n", "auto", "-d" "--tx", "socket=127.0.0.1:8888", "--rsyncdir ./"])

云服务器开启socket服务案例:

python socketserver.py

执行结果:在远程服务器端会生成一份相应的项目数据,因为我们使用的是 ./ 即 把当前项目远程拷贝到目标服务器执行

相关推荐
zquwei3 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
道一云黑板报6 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
飞来又飞去8 小时前
kafka sasl和acl之间的关系
分布式·kafka
MZWeiei9 小时前
Zookeeper的监听机制
分布式·zookeeper
莹雨潇潇9 小时前
Hadoop完全分布式环境部署
大数据·hadoop·分布式
浩哲Zhe10 小时前
RabbitMQ
java·分布式·rabbitmq
明达技术10 小时前
分布式 IO 模块:赋能造纸业,革新高速纸机主传动
分布式
Allen Bright11 小时前
RabbitMQ中的Topic模式
分布式·rabbitmq
李洋-蛟龙腾飞公司12 小时前
HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据
分布式·华为·harmonyos
rainoway13 小时前
CRDT宝典 - Multi-Value-Register
前端·分布式·算法