跳转到主要内容

pytest测试框架的分布式测试规划插件。

项目描述

pytest 测试框架的分布式测试计划插件

https://img.shields.io/pypi/v/pytest-cloud.svg https://img.shields.io/pypi/pyversions/pytest-cloud.svg https://img.shields.io/coveralls/pytest-dev/pytest-cloud/master.svg https://travis-ci.org/pytest-dev/pytest-cloud.svg?branch=master Documentation Status

安装 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 及其他。

作者

Anatoly Bubenkov

原始想法和实现,新功能和改进

Oleg Pidsadnyi

错误修复和进一步改进

以下人员为 pytest-cloud 做出了贡献,按字母顺序排列

变更日志

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

  • 首次公开发布

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

pytest-cloud-5.0.3.tar.gz (14.2 kB 查看哈希值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面