Skip to main content

Pytest plugin reporting fixtures and test functions execution time.

Project description

Downloads

Introduction

A pytest plugin to measure fixture and test durations.

In order to get the pure test setup/teardown durations, plugin subtracts time taken by fixtures which scope is larger than "function".

Installation

$ pip install pytest-durations

Plugin options

pytest-durations:
  --pytest-durations=N  Show N slowest setup/test durations (N=0 to disable
                        plugin). Default 30
  --pytest-durations-min=N
                        Minimal duration in seconds for inclusion in slowest
                        list. Default 0.005

Note: please don't be mistaken by --duration options which comes from pytest itself.

Example of report

============================== fixture duration top ==============================
total          name                              num avg            min
0:00:00.115193                fake_pluginmanager   3 0:00:00.034275 0:00:00.034190
0:00:00.060736                       fake_config   2 0:00:00.030368 0:00:00.030047
0:00:00.048220                      fake_session   2 0:00:00.024110 0:00:00.023326
0:00:00.015640                         fake_node   2 0:00:00.007820 0:00:00.007083
0:00:00.011255                          pytester   6 0:00:00.001447 0:00:00.001332
0:00:00.008079                       fake_parser   1 0:00:00.008079 0:00:00.008079
0:00:00.263918                       grand total  78 0:00:00.000031 0:00:00.000017
============================= test call duration top =============================
total          name                              num avg            min
0:00:00.720817         test_plugin_xdist_enabled   1 0:00:00.720817 0:00:00.720817
0:00:00.252951          test_plugin_with_options   3 0:00:00.084313 0:00:00.084112
0:00:00.158072                 test_get_test_key   9 0:00:00.017230 0:00:00.016828
0:00:00.083768               test_plugin_disable   1 0:00:00.083768 0:00:00.083768
0:00:00.079307        test_plugin_xdist_disabled   1 0:00:00.079307 0:00:00.079307
0:00:00.053477     test_get_current_ticks_frozen   1 0:00:00.053477 0:00:00.053477
0:00:01.355299                       grand total  31 0:00:00.000713 0:00:00.000157
============================ test setup duration top =============================
total          name                              num avg            min
0:00:00.065258    test_pytest_configure_disabled   1 0:00:00.065258 0:00:00.065258
0:00:00.064810             test_pytest_configure   1 0:00:00.064810 0:00:00.064810
0:00:00.055380             test_pytest_addoption   1 0:00:00.055380 0:00:00.055380
0:00:00.025389         test_pytest_sessionfinish   1 0:00:00.025389 0:00:00.025389
0:00:00.023777 test_pytest_sessionfinish_noxdist   1 0:00:00.023777 0:00:00.023777
0:00:00.010331          test_plugin_with_options   3 0:00:00.002551 0:00:00.002534
0:00:00.008948  test_pytest_testnodedown_noxdist   1 0:00:00.008948 0:00:00.008948
0:00:00.007471          test_pytest_testnodedown   1 0:00:00.007471 0:00:00.007471
0:00:00.273505                       grand total  31 0:00:00.002209 0:00:00.000143
=========================== test teardown duration top ===========================
total          name                              num avg            min
0:00:00.007211                       grand total  31 0:00:00.000177 0:00:00.000123
======================== 31 passed, 2 warnings in 1.72s ========================

Development

Project uses poetry for dependencies management, pytest for testing and pre-commit for coding standard checks.

$ pip install poetry
$ poetry install
$ pre-commit install
$ pytest tests

Change Log

1.3.1 (Sep 11, 2024)

  • Upgrade development dependencies

1.3.0 (Sep 11, 2024)

  • Update supported Python versions

1.2.0 (Apr 22, 2022)

  • Use same width for all reports (#6)
  • Improve test coverage (#7)
  • Continuous delivery GitHub workflow

1.1.0 (Mar 7, 2022)

  • Do not interoperate with xdist if it is disabled or absent

1.0.1 (Feb 14, 2022)

  • Grand total row shows real min/max values instead of averages

1.0.0 (Feb 14, 2022)

  • First Release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_durations-1.3.1.tar.gz (8.5 kB view hashes)

Uploaded Source

Built Distribution

pytest_durations-1.3.1-py3-none-any.whl (10.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page