Run tests covering a specific file or changeset
Project description
pytest-involve is a pytest plugin for running only tests which cover a given file or set of files. It’s called pytest-involve because it lets you run only tests involving modules or members from those modules.
Usually with pytest the test set to run is specified and coverage collected based on that set. When pytest-involve is used, instead you specify the file(s) you want to cover, and test files are selected based on whether they import from those file(s) or not.
Usages
pytest-involve adds one command line argument to pytest, namely --involving. This can be provided a file path, a module import path (such as you would use in a Python interpreter), or either of the above suffixed with :: and the name of something defined in there:
pytest --involving ./path/to/file.py
pytest --involving importable.module.path
pytest --involving ./path/to/file.py::member
pytest --involving importable.module.path::member
This will have the effect of only collecting and running tests which are defined in modules whose imports overlap with the file(s) and member(s) specified with the --involving flag.
The plugin aims for recall over precision: It might run a few tests that aren’t strictly necessary, but it shouldn’t ignore any tests that are.
The ::member syntax will only work for things with a __file__ attribute (so, mostly classes and functions).
pytest-involve should play nicely with most other pytest plugins and command line tooling. One useful example is as follows:
git status -s | cut -c4- | grep .py | sed "s/^/--involving /" | xargs pytest
This will take all *.py files mentioned in the output of git status and provide them to pytest prefixed with --involving, which allows for quickly running unit tests relevant to the current state of the repository.
This pytest plugin was generated with Cookiecutter along with @hackebrot’s cookiecutter-pytest-plugin template.
Features
Run unit tests covering specific file(s) via the command line flag --involving
Requirements
pytest
That’s it.
Installation
You can install “pytest-involve” via pip from PyPI:
$ pip install pytest-involve
Contributing
Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.
License
Distributed under the terms of the MIT license, “pytest-involve” is free and open source software.
Issues
If you encounter any problems, please file an issue along with a detailed description.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pytest-involve-0.1.4.tar.gz
.
File metadata
- Download URL: pytest-involve-0.1.4.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d28baa5be46403e30d5f728159ce77a4aecd013807bbcb15b4b11c07aec5576 |
|
MD5 | 979b41decb0a872e1473a8f6d4d45ac7 |
|
BLAKE2b-256 | 25dca5861412ac5768dbd89bdadabd79b213336d78ff3af72645a2c40a890bcc |
File details
Details for the file pytest_involve-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: pytest_involve-0.1.4-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d26c34555b10e5595de4cdfab9c5861d3420e99c1b692d72746b800f9cb0f5f |
|
MD5 | 77221eda16bfbe675c90451f10c1f9a7 |
|
BLAKE2b-256 | b6d9d2e7de67068b4d5233ecc06df03926283d6d132c71134294519544330657 |