Profiling plugin for py.test
Project description
Pytest Profiling Plugin
=======================
Profiling plugin for pytest, with tabular and heat graph output.
Tests are profiled with
`cProfile <http://docs.python.org/library/profile.html#module-cProfile>`__
and analysed with
`pstats <http://docs.python.org/library/profile.html#pstats.Stats>`__;
heat graphs are generated using
`gprof2dot <http://code.google.com/p/jrfonseca/wiki/Gprof2Dot>`__ and
`dot <http://www.graphviz.org/>`__.
.. figure:: https://cdn.rawgit.com/manahl/pytest-plugins/master/pytest-profiling/docs/static/profile_combined.svg
:alt: Example Graph
Example Graph
Installation
------------
Install using your favourite package installer:
.. code:: bash
pip install pytest-profilng
# or
easy_install pytest-profiling
Enable the fixture explicitly in your tests or conftest.py (not required
when using setuptools entry points):
.. code:: python
pytest_plugins = ['pytest_profiling']
Usage
-----
Once installed, the plugin provides extra options to pytest:
.. code:: bash
$ py.test --help
...
Profiling:
--profile generate profiling information
--profile-svg generate profiling graph (using gprof2dot and dot
-Tsvg)
The ``--profile`` and ``profile-svg`` options can be combined with any
other option::
::
$ py.test tests/unit/test_logging.py --profile
============================= test session starts ==============================
platform linux2 -- Python 2.6.2 -- pytest-2.2.3
collected 3 items
tests/unit/test_logging.py ...
Profiling (from prof/combined.prof):
Fri Oct 26 11:05:00 2012 prof/combined.prof
289 function calls (278 primitive calls) in 0.001 CPU seconds
Ordered by: cumulative time
List reduced from 61 to 20 due to restriction <20>
ncalls tottime percall cumtime percall filename:lineno(function)
3 0.000 0.000 0.001 0.000 <string>:1(<module>)
6/3 0.000 0.000 0.001 0.000 core.py:344(execute)
3 0.000 0.000 0.001 0.000 python.py:63(pytest_pyfunc_call)
1 0.000 0.000 0.001 0.001 test_logging.py:34(test_flushing)
1 0.000 0.000 0.000 0.000 _startup.py:23(_flush)
2 0.000 0.000 0.000 0.000 mock.py:979(__call__)
2 0.000 0.000 0.000 0.000 mock.py:986(_mock_call)
4 0.000 0.000 0.000 0.000 mock.py:923(_get_child_mock)
6 0.000 0.000 0.000 0.000 mock.py:512(__new__)
2 0.000 0.000 0.000 0.000 mock.py:601(__get_return_value)
4 0.000 0.000 0.000 0.000 mock.py:695(__getattr__)
6 0.000 0.000 0.000 0.000 mock.py:961(__init__)
22/14 0.000 0.000 0.000 0.000 mock.py:794(__setattr__)
6 0.000 0.000 0.000 0.000 core.py:356(getkwargs)
6 0.000 0.000 0.000 0.000 mock.py:521(__init__)
3 0.000 0.000 0.000 0.000 skipping.py:122(pytest_pyfunc_call)
6 0.000 0.000 0.000 0.000 core.py:366(varnames)
3 0.000 0.000 0.000 0.000 skipping.py:125(check_xfail_no_run)
2 0.000 0.000 0.000 0.000 mock.py:866(assert_called_once_with)
6 0.000 0.000 0.000 0.000 mock.py:645(__set_side_effect)
=========================== 3 passed in 0.13 seconds ===========================
pstats files (one per test item) are retained for later analysis in
``prof`` directory, along with a ``combined.prof`` file:
.. code:: bash
$ ls -1 prof/
combined.prof
test_app.prof
test_flushing.prof
test_import.prof
If the ``--profile-svg`` option is given, along with the prof files and
tabular output a svg file will be generated:
.. code:: bash
$ py.test tests/unit/test_logging.py --profile-svg
...
SVG profile in prof/combined.svg.
This is best viewed with a good svg viewer e.g. Chrome.
Changelog
---------
1.0.1 (2015-12-23)
~~~~~~~~~~~~~~~~~~
- Packaging bugfix
1.0.0 (2015-12-21)
~~~~~~~~~~~~~~~~~~
- Initial public release
=======================
Profiling plugin for pytest, with tabular and heat graph output.
Tests are profiled with
`cProfile <http://docs.python.org/library/profile.html#module-cProfile>`__
and analysed with
`pstats <http://docs.python.org/library/profile.html#pstats.Stats>`__;
heat graphs are generated using
`gprof2dot <http://code.google.com/p/jrfonseca/wiki/Gprof2Dot>`__ and
`dot <http://www.graphviz.org/>`__.
.. figure:: https://cdn.rawgit.com/manahl/pytest-plugins/master/pytest-profiling/docs/static/profile_combined.svg
:alt: Example Graph
Example Graph
Installation
------------
Install using your favourite package installer:
.. code:: bash
pip install pytest-profilng
# or
easy_install pytest-profiling
Enable the fixture explicitly in your tests or conftest.py (not required
when using setuptools entry points):
.. code:: python
pytest_plugins = ['pytest_profiling']
Usage
-----
Once installed, the plugin provides extra options to pytest:
.. code:: bash
$ py.test --help
...
Profiling:
--profile generate profiling information
--profile-svg generate profiling graph (using gprof2dot and dot
-Tsvg)
The ``--profile`` and ``profile-svg`` options can be combined with any
other option::
::
$ py.test tests/unit/test_logging.py --profile
============================= test session starts ==============================
platform linux2 -- Python 2.6.2 -- pytest-2.2.3
collected 3 items
tests/unit/test_logging.py ...
Profiling (from prof/combined.prof):
Fri Oct 26 11:05:00 2012 prof/combined.prof
289 function calls (278 primitive calls) in 0.001 CPU seconds
Ordered by: cumulative time
List reduced from 61 to 20 due to restriction <20>
ncalls tottime percall cumtime percall filename:lineno(function)
3 0.000 0.000 0.001 0.000 <string>:1(<module>)
6/3 0.000 0.000 0.001 0.000 core.py:344(execute)
3 0.000 0.000 0.001 0.000 python.py:63(pytest_pyfunc_call)
1 0.000 0.000 0.001 0.001 test_logging.py:34(test_flushing)
1 0.000 0.000 0.000 0.000 _startup.py:23(_flush)
2 0.000 0.000 0.000 0.000 mock.py:979(__call__)
2 0.000 0.000 0.000 0.000 mock.py:986(_mock_call)
4 0.000 0.000 0.000 0.000 mock.py:923(_get_child_mock)
6 0.000 0.000 0.000 0.000 mock.py:512(__new__)
2 0.000 0.000 0.000 0.000 mock.py:601(__get_return_value)
4 0.000 0.000 0.000 0.000 mock.py:695(__getattr__)
6 0.000 0.000 0.000 0.000 mock.py:961(__init__)
22/14 0.000 0.000 0.000 0.000 mock.py:794(__setattr__)
6 0.000 0.000 0.000 0.000 core.py:356(getkwargs)
6 0.000 0.000 0.000 0.000 mock.py:521(__init__)
3 0.000 0.000 0.000 0.000 skipping.py:122(pytest_pyfunc_call)
6 0.000 0.000 0.000 0.000 core.py:366(varnames)
3 0.000 0.000 0.000 0.000 skipping.py:125(check_xfail_no_run)
2 0.000 0.000 0.000 0.000 mock.py:866(assert_called_once_with)
6 0.000 0.000 0.000 0.000 mock.py:645(__set_side_effect)
=========================== 3 passed in 0.13 seconds ===========================
pstats files (one per test item) are retained for later analysis in
``prof`` directory, along with a ``combined.prof`` file:
.. code:: bash
$ ls -1 prof/
combined.prof
test_app.prof
test_flushing.prof
test_import.prof
If the ``--profile-svg`` option is given, along with the prof files and
tabular output a svg file will be generated:
.. code:: bash
$ py.test tests/unit/test_logging.py --profile-svg
...
SVG profile in prof/combined.svg.
This is best viewed with a good svg viewer e.g. Chrome.
Changelog
---------
1.0.1 (2015-12-23)
~~~~~~~~~~~~~~~~~~
- Packaging bugfix
1.0.0 (2015-12-21)
~~~~~~~~~~~~~~~~~~
- Initial public release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pytest-profiling-1.0.1.tar.gz
(6.3 kB
view hashes)
Built Distributions
Close
Hashes for pytest_profiling-1.0.1-py2.7.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8746c14e594ba0b6f9a3c5b5c3975ca7355a55ff24a4fc0f8bfb7a584f09f3aa |
|
MD5 | 146ca77a28930fba00c5ef9e5e19250c |
|
BLAKE2b-256 | 7393b6458a5495eb0de44a8d2135e531a6e00a31b39311cd15b2453bfb9b347b |
Close
Hashes for pytest_profiling-1.0.1-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48ff464f1402659215d23283f5f379692047c121a016e19a624aa7acb8919d18 |
|
MD5 | 3c42463bd86ed0ea2612fa13f9179ce5 |
|
BLAKE2b-256 | 72fd14fe2287af39844e71d2b4741c283bc9dea9ee994382dcbb1272cc77e054 |