an incremental test runner (pytest plugin)
Project description
pytest-incremental
an incremental test runner (pytest plugin)
What is an “incremental test runner” ?
When talking about build-tools it is common to refer to the terms:
initial (full) build - all files are compiled
incremental build (or partial rebuild) - just changed files are compiled
no-op build - no files are compiled (none changed since last execution)
So an “incremental test runner” will only re-execute tests that were affected by changes in the source code since last test execution.
How it works ?
pytest-incremental is a pytest plugin. So if you can run your test suite with pytest you can use pytest-incremental.
The plugin will analyse your python source files and through its imports define the dependencies of the modules. doit is used to keep track of the dependencies and save results. The plugin will modify how pytest collect your tests. pytest do the rest of the job of actually running the tests and reporting the results.
Install
pytest-incremental is tested on python 2.6, 2.7.
pip install pytest-incremental`
python setup.py install
local installation
You can also just grab the plugin module file and put in your project path. Then enable it (check pytest docs).
Usage
Just pass the parameter --incremental when calling from the command line:
$ py.test --incremental
You can also enable it by default adding the following line to your pytest.ini:
[pytest] addopts = --incremental
watched packages
By default all modules collected by pytest will used as dependencies if imported. In order to limit or extend the watched folders you must use the parameter --watch-pkg
Limitations
pytest-incremental looks for imports recursively to find dependencies (using AST). But given the very dynamic nature of python there are still some cases that a module can be affected by a module that are not detected.
from package import * modules imported from __all__ in a package are not counted as a dependency
modules imported not using the import statement
modules not explictitly imported but used at runtime (i.e. conftest.py when running your tests with pytest)
monkey-patching. (i.e. A imports X. B monkey-patches X. In this case A might depend on B)
others ?
Project Details
Project code + issue track on bitbucket
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
File details
Details for the file pytest-incremental-0.1.0.tar.gz
.
File metadata
- Download URL: pytest-incremental-0.1.0.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bd01dcc9d12de7478f0722e2d81e0807330b9b0fd5264e6c6b7575a09d14bbe |
|
MD5 | 32409a66b552c005054a682a839536f4 |
|
BLAKE2b-256 | 5a128bad8b1a2db16b89ef50859eac1d7c136d4226f03f04c45a94b5bd714705 |