pytest plugin to check pinned requirements
Project description
Description
This plugin checks your requirements files for specific versions, and compares those versions with the installed libraries in your environment, failing your test suite if any are invalid or out of date.
This is useful for keeping virtual environments up-to-date, and ensuring that your test suite is always being passed with the requirements you have specified.
It also has the added bonus of verifying that your requirements files are syntatically valid.
Usage
install via:
pip install pytest-reqs
if you then type:
py.test --reqs
it will search for dependencies in the files matching:
req*.txt
req*.pip
requirements/*.txt
requirements/*.pip
and the declared dependencies will be checked against the current environment.
A little example
If your environment has dependencies installed like this:
$ pip freeze foo==0.9.9
But you have a requirements.txt file like this:
$ cat requirements.txt foo==1.0.0
you can run py.test with the plugin installed:
$ 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
It also handles pip’s version containment syntax (e.g, foo<=1.0.0, foo>=1.0.0, etc):
$ 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
Furthermore, it will tell you if your requirements file is invalid (for example, if there is not enough = symbols):
$ py.test --reqs ______________________________ requirements-check ______________________________ Invalid requirement: 'foo=1.0.0' (from -r requirements.txt)
Configuring options
Ignoring local projects
You might have requirements files with paths to local projects, e.g. for local development:
$ cat requirements/local_development.txt -e ../foo
However, testing these requirements will fail if the test environment is missing the local project (e.g., on a CI build):
=================================== 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)
To get around this, you can disable checking for local projects with the following pytest option:
# content of setup.cfg [pytest] reqsignorelocal = True
Running requirements checks and no other tests
You can also restrict your test run to only perform “reqs” tests and not any other tests by typing:
py.test --reqs -m reqs
This will only run test items with the “reqs” marker which this plugin adds dynamically.
License
Open source MIT license.
Notes
The repository of this plugin is at http://github.com/di/pytest-reqs.
For more info on py.test see http://pytest.org.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pytest_reqs-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66b60f1dc6ada9cb4fc7c1b12736ca581aa06a6646d3b90f6f3e4a43d32f4e86 |
|
MD5 | 66871e7a71abc4699e3c69f2e30164e8 |
|
BLAKE2b-256 | 17e56a2d40a21b22e1d7ca36d84d9ea49e290042ba8a506335b134f6ff009e1d |
Hashes for pytest_reqs-0.0.4-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68fd6978060f99612350567ab1409de2cc537522294e9f99648f67b6e8ff78bb |
|
MD5 | a5691ea640f86231460ce663808f5e98 |
|
BLAKE2b-256 | 686917a35f4c63c6aeceaf01b1fcf43ff53bf79e3ed7c6c74a434e3d3a703c03 |