pytest-threadleak 0.5.0


pip install pytest-threadleak

  Latest version

Released: Jul 03, 2022

Project Links

Meta
Author: Nir Soffer
Maintainer: Nir Soffer

Classifiers

Development Status
  • 4 - Beta

Framework
  • Pytest

Intended Audience
  • Developers

Topic
  • Software Development :: Testing

Programming Language
  • Python
  • Python :: 2
  • Python :: 2.7
  • Python :: 3
  • Python :: 3.6
  • Python :: 3.7
  • Python :: 3.8
  • Python :: 3.9
  • Python :: 3.10
  • Python :: Implementation :: CPython
  • Python :: Implementation :: PyPy

Operating System
  • OS Independent

License
  • OSI Approved :: MIT License
Current version Supports Python 2.7, 3.10, 3.9, 3.8, 3.7, 3.7 Downloads per month Tests status MIT license

Detects tests leaking threads

Installation

You can install “pytest-threadleak” via pip from PyPI:

$ pip install pytest-threadleak

Usage

The threadleak pytest plugin will fail leaking threads. This can be an issue in the test, or in the tested code.

Here is an example leaking test:

$ cat leak_test.py
import threading
import time

def test_leak():
    threading.Thread(target=time.sleep, args=(1,)).start()

Here is an example run with thread leak plugin enabled:

$ pytest --threadleak leak_test.py
...
leak_test.py::test_leak FAILED
...
>   ???
E   Failed: Test leaked [<Thread(Thread-1, started 139762716391168)>]

If you want to enable thread leak by default, you can enable it in your pytest.ini or tox.ini:

[pytest]
threadleak = True

If you want to enable thread leak on a per test/module basis, you can use the threadleak pytest marker:

To enable it for a single test:

@pytest.mark.threadleak
def test_leak():
   ...

To disable it for a single test:

@pytest.mark.threadleak(enabled=False)
def test_leak():
   ...

For an entire test module:

import pytest

pytestmark = pytest.mark.threadleak(enabled=False)

If you want to exclude some threads from the leak check, you can specify a regex to match excluded thread names:

[pytest]
threadleak = True
threadleak_exclude = pool/\d+

Contributing

Running the tests:

$ tox

License

Distributed under the terms of the MIT license, “pytest-threadleak” is free and open source software

Credits

This Pytest plugin was generated with Cookiecutter along with @hackebrot’s Cookiecutter-pytest-plugin template.

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras: None
Dependencies:
pytest (>=3.1.1)