Package: pytest-memray
pytest-memraypytest-memray is a pytest plugin for easy integration ofmemray.Installationpytest-memray requires Python 3.8 or higher and can be easily installed using most
common Python packaging tools. We recommend installing the latest stable release fromPyPIwith pip:pipinstallpytest-memrayDocumentationYou can find the latest documentation availablehere.Quick introductionTo use the plugin in a pytest run, simply add--memrayto the command line invocation:pytest--memraytestsAfter the test suite runs you'll see a memory report printed:===================================testsessionstarts====================================platformlinux--Python3.10.4,pytest-7.1.2,pluggy-1.0.0
cachedir:/v/.pytest_cache
rootdir:/w
plugins:memray-1.1.0
collected2items

demo/test_ok.py.M[100%]=========================================FAILURES=========================================____________________________________test_memory_exceed____________________________________
Testwaslimitedto100.0KiBbutallocated117.2KiB
------------------------------------memray-max-memory-------------------------------------
Testisusing117.2KiBoutoflimitof100.0KiB
Listofallocations:-<listcomp>:/w/demo/test_ok.py:17->117.2KiB======================================MEMRAYREPORT=======================================Allocationsresultsfordemo/test_ok.py::test_memory_exceed📦Totalmemoryallocated:117.2KiB📏Totalallocations:30📊Histogramofallocationsizes:|█|🥇Biggestallocatingfunctions:-<listcomp>:/w/demo/test_ok.py:17->117.2KiB


Allocationsresultsfordemo/test_ok.py::test_track📦Totalmemoryallocated:54.9KiB📏Totalallocations:71📊Histogramofallocationsizes:|█▅|🥇Biggestallocatingfunctions:-test_track:/w/demo/test_ok.py:12->39.1KiB-_compile_bytecode:<frozenimportlib._bootstrap_external>:672->7.2KiB-_call_with_frames_removed:<frozenimportlib._bootstrap>:241->4.7KiB-_call_with_frames_removed:<frozenimportlib._bootstrap>:241->1.8KiB-_is_marked_for_rewrite:/v/lib/python3.10/site-packages/_pytest/assertion/rewrite.py:240->1.1KiB=================================shorttestsummaryinfo==================================MEMORYPROBLEMSdemo/test_ok.py::test_memory_exceed===============================1failed,1passedin0.01s================================Configuration - CLI flags--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--memray-bin-path- path where to write the memray binary dumps (by default a
temporary folder)--memray-bin-prefix- prefix to use for the binary dump (by default a random UUID4
hex)--stacks=STACKS- Show the N stack entries when showing tracebacks of memory allocations--native- Show native frames when showing tracebacks of memory allocations (will be slower)--trace-python-allocators- Record allocations made by the Pymalloc allocator (will be slower)Configuration - INImemray(bool)- activate memray trackingmost-allocations(string)- show the N tests that allocate most memory (N=0 for all)hide_memray_summary(bool)- hide the memray summary at the end of the executionstacks(int)- Show the N stack entries when showing tracebacks of memory allocationsnative(bool)- Show native frames when showing tracebacks of memory allocations (will be slower)trace_python_allocators- Record allocations made by the Pymalloc allocator (will be slower)Licensepytest-memray is Apache-2.0 licensed, as found in theLICENSEfile.Code of ConductCode of ConductThis project has adopted a Code of Conduct. If you have any concerns about the Code, or
behavior which you have experienced in the project, please contact us atopensource@bloomberg.net.Security PolicySecurity PolicyIf you believe you have identified a security vulnerability in this project, please send
email to the project team atopensource@bloomberg.net, detailing the suspected issue and
any methods you've found to reproduce it.Please do NOT open an issue in the GitHub repository, as we'd prefer to keep
vulnerability reports private until we've had an opportunity to review and address them.ContributingWe welcome your contributions to help us improve and extend this project!Below you will find some basic steps required to be able to contribute to the project.
If you have any questions about this process or any other aspect of contributing to a
Bloomberg open source project, feel free to emailopensource@bloomberg.net, and we'll
get your questions answered as quickly as we can.Contribution LicensingSince this project is distributed under the terms of anopen source license,
contributions that you make are licensed under the same terms. In order for us to be
able to accept your contributions, we will need explicit confirmation from you that you
are able and willing to provide them under these terms, and the mechanism we use to do
this is called a Developer's Certificate of Origin(DCO). This is very similar to
the process used by the Linux(R) kernel, Samba, and many other major open source
projects.To participate under these terms, all that you must do is include a line like the
following as the last line of the commit message for each commit in your contribution:Signed-Off-By: Random J. Developer <random@developer.example.org>The simplest way to accomplish this is to add-sor--signoffto yourgit commitcommand.You must use your real name (sorry, no pseudonyms, and no anonymous contributions).StepsCreate an Issue, selecting 'Feature Request', and explain the proposed change.Follow the guidelines in the issue template presented to you.Submit the Issue.Submit a Pull Request and link it to the Issue by including "#" in the
Pull Request summary.DevelopmentThe project requires a Linux OS to work. To set up a DEV environment use tox (or
directly the make targets). You can use Docker to run the test suite on non Linux as in
(you can parametrize tox by passing additional arguments at the end):docker-composerun--rmtesttox