Skip to main content

A simple plugin to use with pytest

Project description

pytest-memray

PyPI - Python Version PyPI - Implementation PyPI PyPI - Downloads Tests Code Style

pytest-memray is a pytest plugin for easy integration of memray.

Usage

To use the plugin in a pytest run, simply add --memray to the command line invocation:

pytest --memray tests/

Would produce a report like:

python3 -m pytest tests --memray
=============================================================================================================================== test session starts ================================================================================================================================
platform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /mypackage, configfile: pytest.ini
plugins: cov-2.12.0, memray-0.1.0
collected 21 items

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


================================================================================================================================= MEMRAY REPORT ==================================================================================================================================
Allocations results for tests/test_package.py::some_test_that_allocates

	 📦 Total memory allocated: 24.4MiB
	 📏 Total allocations: 33929
	 📊 Histogram of allocation sizes: |▂   █    |
	 🥇 Biggest allocating functions:
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 3.0MiB
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 2.3MiB
		- _visit:/opt/bb/lib/python3.8/site-packages/astroid/transforms.py:62 -> 576.0KiB
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 517.6KiB
		- __init__:/opt/bb/lib/python3.8/site-packages/astroid/node_classes.py:1353 -> 512.0KiB

Configuration

This plugin provides a clean minimal set of command line options that are added to pytest.

  • --memray: Activate memray tracking.
  • --most-allocations=MOST_ALLOCATIONS: Show the N tests that allocate most memory (N=0 for all).
  • --hide-memray-summary: Hide the memray summary at the end of the execution.

Markers

There are some builtin markers and fixtures in pytest-memray:

limit_memory

When this marker is applied to a test, it will cause the test to fail if the execution of the test allocates more memory than allowed. It takes a single argument with a string indicating the maximum memory that the test can allocate.

The format for the string is <NUMBER> ([KMGTP]B|B). The marker will raise ValueError if the string format cannot be parsed correctly.

Example of usage:

@pytest.mark.limit_memory("24 MB")
def test_foobar():
    # do some stuff that allocates memory

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-memray-1.0.0.tar.gz (14.4 kB view details)

Uploaded Source

File details

Details for the file pytest-memray-1.0.0.tar.gz.

File metadata

  • Download URL: pytest-memray-1.0.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for pytest-memray-1.0.0.tar.gz
Algorithm Hash digest
SHA256 87cd337d4a258acbffb4b8a5b98eac3474b81e03ea34410c9a87fb6b93c1d072
MD5 284f43e32919b4d1c059c2ad918e765f
BLAKE2b-256 b04692851156000f2df23245596f3d4b51dc52e156ada344d14ffd45c3e1f41f

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