pytest插件,用于检查固定的依赖项要求
项目描述
描述
此插件检查您的依赖项文件中的特定版本,并将这些版本与您的环境中安装的库进行比较,如果任何版本无效或过时,则会失败您的测试套件。
这对于保持虚拟环境更新,并确保您的测试套件始终使用您指定的要求通过非常有用。
它还具有额外的优势,可以验证您的依赖项文件是否语法有效,并检查是否有新的依赖项版本可用。
使用方法
通过
pip install pytest-reqs
如果您输入
py.test --reqs
默认情况下,它将在与以下匹配的文件中搜索依赖项
req*.txt
req*.pip
requirements/*.txt
requirements/*.pip
并将声明的依赖项与当前环境进行比较。
一个简单的例子
如果您的环境安装了如下依赖项
$ pip freeze foo==0.9.9
但您有一个如下所示的 requirements.txt 文件
$ cat requirements.txt foo==1.0.0
您可以运行已安装插件的 py.test
$ py.test --reqs =================================== FAILURES =================================== ______________________________ requirements-check ______________________________ Distribution "foo" requires foo==1.0.0 (from -r requirements.txt (line 1)) but 0.9.9 is installed
它还可以处理 pip 的版本包含语法(例如,foo<=1.0.0,foo>=1.0.0 等)
$ py.test --reqs =================================== FAILURES =================================== ______________________________ requirements-check ______________________________ Distribution "foo" requires foo>=1.0.0 (from -r requirements.txt (line 1)) but 0.9.9 is installed
此外,它还会告诉您您的依赖项文件是否无效(例如,如果 = 符号不足)
$ py.test --reqs ______________________________ requirements-check ______________________________ Invalid requirement: 'foo=1.0.0' (from -r requirements.txt)
配置选项
忽略本地项目
您可能有包含本地项目路径的依赖项文件,例如用于本地开发
$ cat requirements/local_development.txt -e ../foo
但是,如果测试环境缺少本地项目(例如,在CI构建中),测试这些依赖项将失败
=================================== FAILURES =================================== ______________________________ requirements-check ______________________________ ../foo should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+ (from -r requirements.txt)
为了解决这个问题,您可以使用以下 pytest 选项禁用对本地项目的检查
# content of setup.cfg [pytest] reqsignorelocal = True
声明您自己的文件名模式
您可能有自己的依赖项文件不在默认文件名模式中
req*.txt
req*.pip
requirements/*.txt
requirements/*.pip
对于要求文件的文件名没有限制,目前pytest-reqs支持的文件名模式与其他自动化工具支持的常见模式相同。
但是,您可以使用以下pytest选项覆盖这些默认模式:
# content of setup.cfg [pytest] reqsfilenamepatterns = mycustomrequirementsfile.txt someotherfilename.ext
在任何其他测试之前运行pytest-reqs
目前没有定义pytest插件顺序的方法(参见pytest-dev/pytest#935)
这意味着如果您不使用任何其他插件,pytest-reqs将最后运行它的测试。如果您使用其他插件,无法保证pytest-reqs测试将在何时运行。
如果您绝对需要在任何其他测试和插件之前运行pytest-reqs,而不是使用--reqs标志,您可以定义一个tests/conftest.py文件如下:
from pytest_reqs import check_requirements
def pytest_collection_modifyitems(config, session, items):
check_requirements(config, session, items)
运行要求检查而不运行其他测试
您也可以通过键入来限制测试运行,仅执行“reqs”测试而不执行任何其他测试:
py.test --reqs -m reqs
这将仅运行此插件动态添加的带有“reqs”标记的测试项。
检查过时依赖项
您可以使用--reqs-outdated标志确定您的依赖项是否过时
$ py.test --reqs-outdated ______________________________ requirements-check ______________________________ Distribution "foo" is outdated (from -r requirements.txt (line 1)), latest version is foo==1.0.1
此功能仅适用于pip>=9.0.0。
许可证
开源MIT许可证。
注意
此插件的存储库位于http://github.com/di/pytest-reqs。
有关pytest的更多信息,请参阅http://pytest.org。
项目详细信息
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
pytest-reqs-0.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a844458b1e65ca7038be5201c814472725ddcc881ab33125c86b952232a7cfd8 |
|
MD5 | 195b90865fa14be5188bc068b6ea8847 |
|
BLAKE2b-256 | 726edb36a3a607b7fa7bae8913768556c549537de37de29603c5c4546aa54ebe |
pytest_reqs-0.2.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e87fcc2ea23fea9edb9e2ed877b4e839a4aa44df430f9a38f7469a70fdb0edfc |
|
MD5 | 91f0c188f9f0220f43d067532e6309cf |
|
BLAKE2b-256 | 6090b101bcd21d05fae6dfb43a40e1b290eaa9630a6f564296a24dad048809f4 |