Skip to main content

Pytest plugin for reporting running time and peak memory usage

Project description

pytest-resource-usage

Add running times and peak memory usage of tests to the output of pytest. Two ways of measuring memory usage are implemented. The first uses tracemalloc, which is unaffected by swapping. Since tracemalloc is a standard library, this way of measuring introduces no dependencies beyond pytest. However, measuring with tracemalloc can have a high overhead. The other way of measuring memory usage is by means of sampling the unique set size. This method has lower overhead, but can be less accurate and is only available if the psutil package is installed.

The pytest-resource-usage package is intentionally kept fairly simple. If you want something more feature-rich and ambitious, you should use pytest-monitor.

Example usage

Reporting is triggered by the presence of one or more of the following markers:

  • report_duration,
  • report_tracemalloc,
  • report_uss (requires psutil).
from time import sleep

import pytest


@pytest.mark.report_duration
def test_sleep():
    sleep(99)


@pytest.mark.report_uss
@pytest.mark.report_tracemalloc
@pytest.mark.report_duration
@pytest.mark.parametrize("elements", [2_000_000, 1_000_000])
def test_tracemalloc_overhead(elements):
    _ = list(range(elements))


@pytest.mark.report_uss(interval=0.01)
@pytest.mark.report_duration
def test_unique_set_size():
    _ = list(range(1_000_000))


@pytest.mark.report_duration
def test_no_overhead():
    _ = list(range(1_000_000))

Running the above tests produces the following pytest output.

================================================================ test session starts =================================================================
plugins: pytest_resource_usage-0.2.0
collected 5 items                                                                                                                                    

tests/test_readme.py .....                                                                                                                     [100%]

=================================================================== resource usage ===================================================================
tests/test_readme.py::test_sleep (call) running time: 0:01:39
tests/test_readme.py::test_tracemalloc_overhead[2000000] (call) peak allocated memory: 72MB, peak unique set size: 243MB, running time: 0.627 seconds
tests/test_readme.py::test_tracemalloc_overhead[1000000] (call) peak allocated memory: 36MB, peak unique set size: 115MB, running time: 0.329 seconds
tests/test_readme.py::test_unique_set_size (call) peak unique set size: 25.7MB, running time: 0.047 seconds
tests/test_readme.py::test_no_overhead (call) running time: 0.020 seconds
=========================================================== 5 passed in 100.13s (0:01:40) ============================================================

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

pytest_resource_usage-0.2.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

pytest_resource_usage-0.2.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file pytest_resource_usage-0.2.0.tar.gz.

File metadata

File hashes

Hashes for pytest_resource_usage-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c69b79064197d956031cc5209f3701b529ea7e143ee182b23137ded9869f8a78
MD5 41a99ba2af87e594706eeff10a247a2b
BLAKE2b-256 fb51cac4203c451f963fa4ee2d6933acfc422565c3e5d934ecf8b5744c732344

See more details on using hashes here.

File details

Details for the file pytest_resource_usage-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_resource_usage-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3e38a861b5a64d88d369896f3f039db079635640e3e28d768a6d23379beff886
MD5 b1c5edfd88ad7b2149c09a4412bfd076
BLAKE2b-256 f7f8f938c35d7553dbdba624e9e3e0dfd60735b4f8f2219e9292460442cc178a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page