This is a pytest plug-in which automatically selects and re-executes only tests affected by recent changes. How is this possible in dynamic language like Python and how reliable is it? Read here: Determining affected tests
pip install pytest-testmon
# build the dependency database and save it to .testmondata
pytest --testmon
# change some of your code (with test coverage)
# only run tests affected by recent changes
pytest --testmon
To learn more about different options you can use with testmon, please head to testmon.org
We would like to run testmon within your project, collect data and improve! We'll prepare the PR for you and set everything up so that no tests are deselected initially. You can start using the full functionality whenever the reliability and time savings seem right! Please get in touch and we'll contact you shortly.
We support multiprocessing. To enable it, put this in your .coveragerc
:
[run]
concurrency = multiprocessing
parallel = true
sigterm = true
There are some limitations:
- We only tested
torch.multprocessing.spawn
. Orignalmultiprocessing
module may not work well. - Coverage plugin is not tested. It may not work well.
pytest-xdist
is not tested. It may not work well.- To set context of subprocess correctly, you need to set test batch size to 1, which may slow down the test.
We support saving coverage data in .coverage
file. To enable it:
pytest --testmon --testmon-cov $SOURCE tests
Known issues:
- This is not compatible with
pytest-cov
. You'd better uninstallpytest-cov
before using this feature. - If you don't specify
$SOURCE
(pytest --testmon --testmon-cov tests
), we will use record everything. This behavior is different fromcoverage.py
. Thus, we highly recommend you to specify$SOURCE
.
TESTMON_CORE_PKGS
: when dectecting package changes, it will only include packages in this list. E.g. TESTMON_CORE_PKGS=requirements.txt,requirements-dev.txt
, it will only include packages in requirements.txt
and requirements-dev.txt
.