pytest-memrayΒΆ

A pytest plugin for easy integration of memray in your test suite. It can produce reports like:

$ pytest --memray /w/demo 
Traceback (most recent call last):
  File "/v/bin/pytest", line 8, in <module>
    sys.exit(_console_main())
             ~~~~~~~~~~~~~^^
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 253, in _console_main
    code = _main(prog=_get_prog_name(sys.argv))
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 223, in _main
    config = _prepareconfig(new_args, plugins, prog=prog)
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 410, in _prepareconfig
    config: Config = pluginmanager.hook.pytest_cmdline_parse(
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        pluginmanager=pluginmanager, args=args
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/v/share/python3.13/site-packages/pluggy/_caller.py", line 197, in __call__
    return self._hookexec(
           ~~~~~~~~~~~~~~^
        self.name, self._hookimpls.copy(), call_kwargs, firstresult
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/v/share/python3.13/site-packages/pluggy/_manager.py", line 183, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/pluggy/_execution.py", line 195, in _multicall
    raise exception
  File "/v/share/python3.13/site-packages/pluggy/_execution.py", line 167, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/_pytest/helpconfig.py", line 124, in pytest_cmdline_parse
    config = yield
             ^^^^^
  File "/v/share/python3.13/site-packages/pluggy/_execution.py", line 147, in _multicall
    res = hook_impl.function(*args)
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 1232, in pytest_cmdline_parse
    self.parse(args)
    ~~~~~~~~~~^^^^^^
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 1583, in parse
    self.pluginmanager.load_setuptools_entrypoints("pytest11")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/pluggy/_manager.py", line 521, in load_setuptools_entrypoints
    plugin = ep.load()
  File "/v/lib64/python3.13/importlib/metadata/__init__.py", line 179, in load
    module = import_module(match.group('module'))
  File "/v/lib64/python3.13/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1404, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1369, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1312, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1404, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1369, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1340, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "/v/share/python3.13/site-packages/_pytest/assertion/rewrite.py", line 188, in exec_module
    exec(co, module.__dict__)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/case/__init__.py", line 12, in <module>
    from . import skip
  File "/v/share/python3.13/site-packages/_pytest/assertion/rewrite.py", line 188, in exec_module
    exec(co, module.__dict__)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/case/skip.py", line 7, in <module>
    from nose import SkipTest
  File "/v/share/python3.13/site-packages/nose/__init__.py", line 2, in <module>
    from nose.core import collector, main, run, run_exit, runmodule
  File "/v/share/python3.13/site-packages/nose/core.py", line 8, in <module>
    from nose.loader import defaultTestLoader
  File "/v/share/python3.13/site-packages/nose/loader.py", line 17, in <module>
    from nose.importer import Importer, add_path, remove_path
  File "/v/share/python3.13/site-packages/nose/importer.py", line 14, in <module>
    from importlib._bootstrap import _ERR_MSG, _builtin_from_name
ImportError: cannot import name '_ERR_MSG' from 'importlib._bootstrap' (/v/lib64/python3.13/importlib/_bootstrap.py)