pytest测试框架的分布式测试规划插件。
项目描述
pytest 测试框架的分布式测试计划插件
安装 pytest-cloud
pip install pytest-cloud # install GNU parallel utility # https://gnu.ac.cn/software/parallel/ # for MacOS, you can use: brew install parallel
功能
该插件提供了一种简单的方法在多个测试节点(工作节点)之间运行测试。使用伟大的pytest-xdist插件进行实际的分布式运行。当使用时,它将自动检测给定节点的能力,并只运行它能够处理的测试进程数量。它还会过滤掉离线节点或未能响应能力获取调用节点的节点。
支持将代码库自动传播到测试节点,因此您不需要在远程测试节点上全局安装项目的 Python 依赖项 - 只需确保您的 virtualenv 文件夹位于项目文件夹内 - 这是一个要求。它还将检测测试环境(项目根目录)的根文件夹,并将其通过 rsync 同步到所有测试节点。
注意:> pytest-cloud 使用 virtualenv 而不是内置的 venv 包。
目前只支持 ssh 传输。所以请确保您已从主节点(pytest 执行的地方)启用至少公钥认证到测试节点。
命令行选项
- –cloud-node
运行测试的节点主机名(或 user@hostname)。允许多个。
- –cloud-nodes
以空格分隔的节点主机名列表(或 user@hostname)以运行测试。允许多个。
- –cloud-python
可选的远程测试节点上使用的 Python 可执行文件名称。默认为主节点上测试运行使用的可执行文件名称。
- –cloud-chdir
可选的相对路径,用于远程测试节点上的目标文件夹以同步文件和运行测试。默认为 pytest_<username>_<current_folder_name>。
- –cloud-virtualenv-path
可选的远程测试节点上使用的 virtualenv 的相对路径。默认情况下,它将尝试检测当前测试进程是否使用 virtualenv,以及它是否位于当前目录中。如果是这种情况,它将使用它对远程节点进行 rsync。
- –cloud-mem-per-process
可选的测试进程大致需要的内存量,以兆字节为单位。将用于计算每个节点的测试进程数量,获取空闲内存,除以每个进程所需的内存量,并取该值与测试节点 CPU 核心数的最小值。
- –cloud-max-processes
可选的每个测试节点的最大进程数。将覆盖使用内存和 CPU 核心数计算出的进程数量。
- –cloud-rsync-bandwidth-limit
可选的每个 rsync 进程的带宽限制,以千字节每秒为单位。默认为 5000。
- –cloud-rsync-max-processes
可选的 rsync 进程的进程数量限制。默认没有限制,因此对所有测试节点并行 rsync。
- –cloud-rsync-cipher
可选的 rsync 进程的 ssh 加密选择。默认为 aes128-gcm@openssh.com。默认加密选择是为了最小化可能的网络开销。网络开销取决于系统、编译和 CPU 架构,但选择的加密在大多数情况下都显示出良好的结果。
ini 文件选项
- cloud_develop_eggs
可选的 Python 包路径列表,在开发模式下在远程端安装。必须在项目根目录内。
示例
py.test tests/ --cloud-node=10.0.120.{1..40} --cloud-mem-per-process=1000 --rsyncdir=.
或者,如果您通过空格分隔的列表传递节点列表
py.test tests/ --cloud-nodes='10.0.120.1 10.0.120.2' --cloud-mem-per-process=1000 --rsyncdir=.
联系方式
如果您有任何问题、错误报告、建议等,请在此GitHub 项目页面上创建问题。
许可证
本软件遵循 MIT 许可协议
请参阅 许可文件
© 2015 Anatoly Bubenkov 及其他。
变更日志
5.0.3
修复问题 #21 (dasm)
完全放弃对 python2 的支持 (dasm)
添加对 virtualenv 的显式要求 (dasm)
5.0.2
移除 python2 支持 (bubenkoff)
5.0.1
正确处理默认 venv 位置 (bubenkoff)
5.0.0
与 pytest-xdist >= 1.26.0 兼容 包括 2.0.0+ (Zac-HD)
4.0.0
添加配置选项以选择 SSH 连接的加密方式 (dasm)
修复 pytest 的弃用警告 (dasm)
支持 pytest-xdist >= 1.26.0 (dasm)
支持 pytest >= 3.6.1 (dasm)
移除对 Python 3.0、3.1、3.2、3.3 的支持(与 pytest-xdist 保持一致)(dasm)
3.0.1
支持 python 3.7 (bubenkoff)
3.0.0
支持 pytest-xdist >=1.22.1 (bubenkoff)
2.0.0
pytest 固定版本号已从要求中移除 (olegpidsadnyi)
移除 pytest-cache 依赖 (olegpidsadnyi)
1.3.8
为 rsync 进度添加可打印信息 (bubenkoff)
1.3.4
添加 develop eggs 设置,以便在开发模式下在远程端安装包 (bubenkoff)
1.2.16
正确处理远程端的 python 路径 (bubenkoff)
1.2.12
将 rsync 进度添加到输出中,更改默认带宽限制 (bubenkoff)
1.2.11
使用快速本地 rsync 代替基于 python 的 rsync (bubenkoff)
1.1.0
避免对同一节点进行不必要的多次 SSH 连接 (bubenkoff)
1.0.25
正确执行 virtualenv (bubenkoff)
1.0.18
确保插件命令行钩子首先执行 (bubenkoff)
正确计算空闲内存 (bubenkoff)
1.0.15
添加 pyc 文件清理 (bubenkoff)
1.0.13
自动发现 virtualenv (bubenkoff)
修复 rsync 问题 (bubenkoff)
安全生成节点 ID (bubenkoff)
保证提供的节点唯一性 (bubenkoff)
1.0.10
在 rsync 时删除孤儿文件 (bubenkoff)
1.0.7
添加通过空格分隔传递节点列表的可能性 (bubenkoff)
1.0.6
首次公开发布
项目详情
pytest-cloud-5.0.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e52a27d2d3666af79a1c44d49c6c98297aec4af5b713c0ccbc807788e7b8e227 |
|
MD5 | ddda60bfbd1a3593a0f21a1a9b0fa56b |
|
BLAKE2b-256 | a16c498b65a8de84685273664d46aa32d1622bbb68aff3dcc3c19c2bfbc98b77 |