Skip to main content
Pytest-Monitor

pytest-monitor

Documentation Status PyPI version Python versions See Build Status on Circle CI https://anaconda.org/conda-forge/pytest-monitor/badges/platforms.svg https://anaconda.org/conda-forge/pytest-monitor/badges/version.svg https://img.shields.io/badge/License-MIT-blue.svg

Pytest-monitor is a pytest plugin designed for analyzing resource usage.


Features

  • Analyze your resources consumption through test functions:

    • memory consumption

    • time duration

    • CPU usage

  • Keep a history of your resource consumption measurements.

  • Compare how your code behaves between different environments.

Usage

Simply run pytest as usual: pytest-monitor is active by default as soon as it is installed. After running your first session, a .pymon sqlite database will be accessible in the directory where pytest was run.

Example of information collected for the execution context:

ENV_H

CPU_COUNT

CPU_FREQUENCY_MHZ

CPU_TYPE

CPU_VENDOR

RAM_TOTAL_MB

MACHINE_NODE

MACHINE_TYPE

MACHINE_ARCH

SYSTEM_INFO

PYTHON_INFO

8294b1326007d9f4c8a1680f9590c23d

36

3000

x86_64

Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz

772249

some.host.vm.fr

x86_64

64bit

Linux - 3.10.0-693.el7.x86_64

3.6.8 (default, Jun 28 2019, 11:09:04) n[GCC …

Here is an example of collected data stored in the result database:

RUN_DATE

ENV_H

SCM_ID

ITEM_START_TIME

ITEM

KIND

COMPONENT

TOTAL_TIME

USER_TIME

KERNEL_TIME

CPU_USAGE

MEM_USAGE

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:36.890477

pkg1.test_mod1/test_sleep1

function

None

1.005669

0.54

0.06

0.596618

1.781250

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:39.912029

pkg1.test_mod1/test_heavy[10-10]

function

None

0.029627

0.55

0.08

21.264498

1.781250

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:39.948922

pkg1.test_mod1/test_heavy[100-100]

function

None

0.028262

0.56

0.09

22.998773

1.781250

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:39.983869

pkg1.test_mod1/test_heavy[1000-1000]

function

None

0.030131

0.56

0.10

21.904277

2.132812

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:40.020823

pkg1.test_mod1/test_heavy[10000-10000]

function

None

0.060060

0.57

0.14

11.821601

41.292969

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:40.093490

pkg1.test_mod2/test_sleep_400ms

function

None

0.404860

0.58

0.15

1.803093

2.320312

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:40.510525

pkg2.test_mod_a/test_master_sleep

function

None

5.006039

5.57

0.15

1.142620

2.320312

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:45.530780

pkg3.test_mod_cl/test_method1

function

None

0.030505

5.58

0.16

188.164762

2.320312

2020-02-17T09:11:36.731233

8294b1326007d9f4c8a1680f9590c23d

de23e6bdb987ae21e84e6c7c0357488ee66f2639

2020-02-17T09:11:50.582954

pkg4.test_mod_a/test_force_monitor

function

test

1.005015

11.57

0.17

11.681416

2.320312

Documentation

A full documentation is available.

Installation

You can install pytest-monitor via conda (through the conda-forge channel):

$ conda install pytest-monitor -c https://conda.anaconda.org/conda-forge

Another possibility is to install pytest-monitor via pip from PyPI:

$ pip install pytest-monitor

Requirements

You will need a valid Python 3.5+ interpreter. To get measures, we rely on:

  • psutil to extract CPU usage

  • memory_profiler to collect memory usage

  • and pytest (obviously!)

Note: this plugin doesn’t work with unittest

Storage backends

By default, pytest-monitor stores its result in a local SQLite3 local database, making results accessible. If you need a more powerful way to analyze your results, checkout the monitor-server-api which brings both a REST Api for storing and historize your results and an API to query your data. An alternative service (using MongoDB) can be used thanks to a contribution from @dremdem: pytest-monitor-backend.

Contributing

Contributions are very welcome. Tests can be run with tox. Before submitting a pull request, please ensure that:

  • both internal tests and examples are passing.

  • internal tests have been written if necessary.

  • if your contribution provides a new feature, make sure to provide an example and update the documentation accordingly.

License

This code is distributed under the MIT license. pytest-monitor is free, open-source software.

Issues

If you encounter any problem, please file an issue along with a detailed description.

Author

The main author of pytest-monitor is Jean-Sébastien Dieu, who can be reached at jdieu@salsify.fr.


This pytest plugin was generated with Cookiecutter along with @hackebrot’s cookiecutter-pytest-plugin template.

Release files for pytest-monitor 1.6.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-monitor 1.6.6
File Size Uploaded
pytest-monitor-1.6.6.tar.gz 20.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-monitor 1.6.6
File Interpreter ABI Platform
pytest_monitor-1.6.6-py3-none-any.whl Python 3 none any Details

Total release size: 34.9 kB

Release files / pytest-monitor-1.6.6.tar.gz

Download URL pytest-monitor-1.6.6.tar.gz
Size 20.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b0c44dc44a2d6cdd19f84caa18fafeb1227e2b33bcbd11a2071dacd3763e1b6f
BLAKE2b-256 checksum
How to use checksums
9e5ab4768ee6ba0a47151cf990e129079b4926db9034c45aa47b72793f37c40d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / pytest_monitor-1.6.6-py3-none-any.whl

Download URL pytest_monitor-1.6.6-py3-none-any.whl
Size 14.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5be37d14aa423fe97af94bd44e3a47a551bd5d94d64921974580bbaadc1c1c94
BLAKE2b-256 checksum
How to use checksums
5acb32a51cf49235442ddeb65dd525844e75d6cdd1a30a5d9575d0f3bdfbb418
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

1.6.6 This release

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page