Last updated:
0 purchases
pytestmonitor 1.6.6
pytest-monitor
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 [email protected].
This pytest plugin was generated with Cookiecutter along with @hackebrot’s cookiecutter-pytest-plugin template.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.