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.