跳至主要内容

pytest的Unix shell和环境工具包

项目描述

这个库是Unix shell和环境管理工具的集合,用于自动化测试。下面是可用功能的摘要,请查看源代码以获取完整列表。

安装

使用您喜欢的包管理器进行安装

.. code:: bash

pip install pytest-shutil # 或者.. easy_install pytest-shutil

工作空间 fixture

工作空间 fixture 简单来说就是一个具有一些额外功能的函数作用域的临时目录

.. code:: python

在您的测试或conftest.py中明确启用设备(使用setuptools入口点时不需要)pytest_plugins = [‘pytest_shutil’]

def test_something(workspace)

# 工作区包含对path.py路径对象的引用(见https://pathpy.readthedocs.io/)path = workspace.workspace script = path / ‘hello.sh’ script.write_text(‘#!/bin/shn echo hello world!’)

# 有一个‘run’方法来执行相对于工作区根目录的内容 workspace.run(‘hello.sh’)

pytest_shutil.env:Shell辅助工具

功能

描述

set_env

环境变量设置上下文管理器

unset_env

环境变量取消设置上下文管理器

no_env

单个环境变量取消设置的上下文管理器

no_cov

禁用子进程中的覆盖率上下文管理器

pytest_shutil.cmdline:命令行辅助工具

功能

描述

umask

umask设置上下文管理器

chdir

更改目录的上下文管理器

TempDir

临时目录的上下文管理器

PrettyFormatter

简单文本格式化工具,用于绘制标题、段落、hr。

copy_files

将一个目录中的所有文件复制到另一个目录

getch

跨平台从屏幕读取单个字符

which

Unix which 的类似物

get_real_python_executable

找到我们的系统Python,这在虚拟环境下运行时很有用

pytest_shutil.run:在子进程中运行内容

功能

描述

run

运行命令,带有捕获输出、检查返回代码的选项。

run_as_main

以系统入口点的形式运行函数

run_module_as_main

以系统入口点的形式运行模块

run_in_subprocess

在子进程中运行函数

run_with_coverage

启用覆盖率运行命令

变更日志

1.7.0

  • 所有:支持pytest >= 4.0.0

  • 所有:支持Python 3.7

  • pytest-server-fixtures:如果您的机器上未定义主机,则默认为主机localhost

  • pytest-server-fixture:由于上游API更改,固定为rethinkdb < 2.4.0

  • pytest-verbose-parametrize:添加对改进的标记基础设施的支持

  • pytest-verbose-parametrize:修复集成测试以支持pytest >= 4.1.0

  • pytest-virtualenv:添加virtualenv作为安装要求。修复#122

  • pytest-webdriver:使用getfixturevalue修复RemovedInPytest4Warning

  • circleci:通过跳过没有推送访问权限的开发者的coverall提交来修复检查

  • wheels:生成适用于python 2.x和3.x的通用wheels

  • dist:删除构建和分发*.egg文件的支持

  • VagrantFile:默认安装python 3.7并初始化python 3.7

  • 使用“logger.warning()”函数修复DeprecationWarning警告

1.6.2 (2019-02-21)

  • pytest-server-fixtures:如果调用kill(),则抑制堆栈跟踪

  • pytest-server-fixtures:修复TestServerV2中随机端口逻辑

1.6.1 (2019-02-12)

  • pytest-server-fixtures:修复在服务器未启动时尝试访问主机名时的异常

1.6.0 (2019-02-12)

  • pytest-server-fixtures:添加之前删除的TestServerV2.kill()函数

  • pytest-profiling:在集成测试中固定more-itertools==5.0.0,因为这是一个仅适用于PY3的版本

1.5.1 (2019-01-24)

  • pytest-verbose-parametrize:修复使用@pytest.mark.parametrize时的问题

1.5.0 (2019-01-23)

  • pytest-server-fixtures:使postgres fixture及其测试可选,如所有其他fixture

  • pytest-server-fixtures:撤销对pymongo弃用警告的修复,因为这会破坏与pymongo 3.6.0的兼容性

  • pytest-server-fixtures:在httpd中删除对RHEL5的支持

1.4.1 (2019-01-18)

  • pytest-server-fixtures:现在只影响服务器类‘thread’,ENV中指定的服务器固定二进制路径现在只影响服务器类‘thread’

1.4.0 (2019-01-15)

  • 修复Simple HTTP服务器固定中的python 3兼容性

  • 修复pytest-profiling中的损坏测试

  • 将pytest<4.0.0固定,直到所有弃用警告都得到修复。

  • pytest-webdriver:用无头Google Chrome替换已弃用的phantomjs。

  • 将Vagrantfile添加到项目中,以使测试环境可移植。

  • 将.editorconfig文件添加到项目中。

  • pytest-server-fixtures:添加支持Docker和Kubernetes的TestServerV2。

  • pytest-server-fixtures:修复MinioServer在使用后未清理的问题。

  • pytest-server-fixtures: 修复调用pymongo时的弃用警告。

  • pytest-server-fixtures: 在MongoTestServer拆除时关闭pymongo客户端。

  • pytest-server-fixtures: 将Mongo、Redis和RethinkDB升级到TestServerV2。

  • coveralls: 修复损坏的coveralls

1.3.1 (2018-06-28)

  • 使用pymongo list_database_names()代替已弃用的database_names(),添加了pymongo>=3.6.0依赖项

1.3.0 (2017-11-17)

  • 修复了当teardown为None时的工作空间删除问题

  • 修复了pytest-listener中的root logger的压缩问题

  • 添加了S3 Minio测试工具(感谢Gavin Bisesi)

  • 添加了Postgres测试工具(感谢Gavin Bisesi)

  • 使用requests进行服务器测试工具HTTP GET,因为它可以正确处理重定向和代理

1.2.12 (2017-8-1)

  • 修复了缓存临时主机名的回归,一些客户端依赖于此。现在这是可选的。

1.2.11 (2017-7-21)

  • 修复了OSX绑定到非法本地IP范围的问题(感谢Gavin Bisesi)

  • 为pytest-profiling设置和Py3k修复(感谢xoviat)

  • 不再尝试在保留本地IP主机时绑定端口5000,因为有人可能将其绑定到0.0.0.0

  • 修复了当本地虚拟环境未激活时source gprof2dot的回归

1.2.10 (2017-2-23)

  • 在pytest-webdriver中处理自定义Pytest测试项

1.2.9 (2017-2-23)

  • 将用户名添加到mongo服务器测试工具tempdir路径中,以防止在共享多用户文件系统上发生冲突

1.2.8 (2017-2-21)

  • 在shutil.run.run_as_main中返回函数结果

1.2.7 (2017-2-20)

  • 对较老版本的path.py进行更多处理

  • 允许在pytest-virtualenv中传递virtualenv参数

1.2.6 (2017-2-16 )

  • 更新devpi服务器设置以支持devpi-server >= 2.0

  • 随机端口选择改进

  • HTTPD服务器现在默认绑定到0.0.0.0,以帮助进行Selenium-style测试

  • 更新mongodb服务器参数以支持mongodb >= 3.2

  • 对mongodb测试工具配置和启动逻辑进行纠正

  • 添加了模块范围mongodb测试工具

  • 对较老版本的path.py进行处理

  • 修复了#40问题,即更改当前工作目录的测试会破坏pytest-profiling

1.2.5 (2016-12-09)

  • 对服务器运行器主机和端口生成进行改进,现在支持随机本地IP

  • RethinkDB测试工具配置的修复

1.2.4 (2016-11-14)

  • pymongo额外依赖项的修复

  • 为pytest-virtualenv修复了Windows兼容性问题(感谢Jean-Christophe Fillion-Robin提交的PR)

  • 修复了pytest-shutil.cmdline.get_real_python_executable的符号链接处理

1.2.3 (2016-11-7)

  • 提高Mongo测试工具启动检查的健壮性

1.2.2 (2016-10-27)

  • 大多数模块的Python 3兼容性

  • 修复了已弃用的Path.py导入(感谢Bryan Moscon)

  • 修复了pytest-profiling中的已弃用多调用(感谢Paul van der Linden提交的PR)

  • 添加devpi-server测试工具以创建每个测试函数的索引

  • 添加了缺失的许可证文件

  • 拆分httpd服务器测试工具配置,以便子类可以更容易地覆盖加载的模块

  • 将“preserve_sys_path”参数添加到TestServer基类,该参数将当前python sys.path导出到子进程中。

  • 更新httpd、redis和jenkins运行参数和路径以符合当前的Ubuntu规范

  • 在拆除工作空间时忽略错误,以避免在“shutil.rmtree”实现中发生竞态条件

1.2.1 (2016-3-1)

  • 修复了适用于最新版本py.test的pytest-verbose-parametrize

1.2.0 (2016-2-19)

  • 新插件:git存储库测试工具

1.1.1 (2016-2-16)

  • pytest-profiling改进:在.prof文件中转义非法字符(感谢Aarni Koskela提交的PR)

1.1.0 (2016-2-15)

  • 新插件:devpi服务器测试工具

  • pytest-profiling改进:过长的.prof文件以测试名称的短哈希保存(感谢Vladimir Lagunov提交的PR)

  • 出于安全原因,将workspace.run()的默认行为更改为不使用子shell

  • 更正了virtualenv.run()方法,使其与父方法workspace.run()处理参数的方式相同

  • 从virtualenv参数中删除了已弃用的“–distribute”

1.0.1 (2015-12-23)

  • 软件包修复

1.0.0 (2015-12-21)

  • 首次公开发布

支持者