A pytest plugin to trace resource leaks.
To add a leaks test to your py.test session, add the -R
option on the command line:
$ py.test -v -R : test_fauset.py ============================= test session starts ============================= platform darwin -- Python 3.5.2+, pytest-3.0.5.dev0, py-1.4.31, pluggy-0.4.0 -- cachedir: .cache rootdir: .../abalkin/pytest-leaks, inifile: plugins: leaks-0.2.0, cov-2.4.0, pyq-1.1 collected 3 items test_fauset.py::test_leaky_fauset LEAKED test_fauset.py::test_broken_fauset FAILED test_fauset.py::test_mended_fauset PASSED ================================ leaks summary ================================ test_fauset.py::test_leaky_fauset: Leaks([('refs', [2, 2, 2, 2])]) ================================== FAILURES =================================== _____________________________ test_broken_fauset ______________________________ def test_broken_fauset(): > assert 0 E assert 0 test_fauset.py:6: AssertionError ================ 1 failed, 1 passed, 1 leaked in 0.46 seconds =================
The test file used above contains the following code:
$ cat test_fauset.py drops = [] def test_leaky_fauset(): drops.append({}) def test_broken_fauset(): assert 0 def test_mended_fauset(): assert 1
- Detects memory leaks by running py.test tests repeatedly and comparing total reference counts between the runs.
- py.test version >= TBD;
- A debug build of Python 3.5.
You can install "pytest-leaks" via pip from PyPI:
$ pip install pytest-leaks
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.
Distributed under the terms of the MIT license, "pytest-leaks" is free and open source software.
If you encounter any problems, please file an issue along with a detailed description.
This Pytest plugin was initially generated with Cookiecutter along with @hackebrot's Cookiecutter-pytest-plugin template.