pytest-memrayΒΆ

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

$ pytest --memray /w/demo 
/v/share/python3.13/site-packages/pytest_cython/__init__.py:2: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  from pkg_resources import get_distribution
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 201, in console_main
    code = main()
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 156, in main
    config = _prepareconfig(args, plugins)
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 342, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
        pluginmanager=pluginmanager, args=args
    )
  File "/v/share/python3.13/site-packages/pluggy/_hooks.py", line 513, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/pluggy/_callers.py", line 139, in _multicall
    raise exception.with_traceback(exception.__traceback__)
  File "/v/share/python3.13/site-packages/pluggy/_callers.py", line 122, in _multicall
    teardown.throw(exception)  # type: ignore[union-attr]
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/_pytest/helpconfig.py", line 112, in pytest_cmdline_parse
    config = yield
             ^^^^^
  File "/v/share/python3.13/site-packages/pluggy/_callers.py", line 103, in _multicall
    res = hook_impl.function(*args)
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 1146, in pytest_cmdline_parse
    self.parse(args)
    ~~~~~~~~~~^^^^^^
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 1527, in parse
    self._preparse(args, addopts=addopts)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/_pytest/config/__init__.py", line 1417, in _preparse
    self.known_args_namespace = self._parser.parse_known_args(
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        args, namespace=copy.copy(self.known_args_namespace)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/v/share/python3.13/site-packages/_pytest/config/argparsing.py", line 155, in parse_known_args
    return self.parse_known_and_unknown_args(args, namespace=namespace)[0]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/v/share/python3.13/site-packages/_pytest/config/argparsing.py", line 169, in parse_known_and_unknown_args
    optparser = self._getparser()
  File "/v/share/python3.13/site-packages/_pytest/config/argparsing.py", line 128, in _getparser
    arggroup.add_argument(*n, **a)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/v/lib64/python3.13/argparse.py", line 1517, in add_argument
    return self._add_action(action)
           ~~~~~~~~~~~~~~~~^^^^^^^^
  File "/v/lib64/python3.13/argparse.py", line 1724, in _add_action
    action = super(_ArgumentGroup, self)._add_action(action)
  File "/v/lib64/python3.13/argparse.py", line 1531, in _add_action
    self._check_conflict(action)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/v/lib64/python3.13/argparse.py", line 1673, in _check_conflict
    conflict_handler(action, confl_optionals)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/v/lib64/python3.13/argparse.py", line 1682, in _handle_conflict_error
    raise ArgumentError(action, message % conflict_string)
argparse.ArgumentError: argument --benchmark-columns: conflicting option string: --benchmark-columns