Skip to main content

Collects tests metadata for future analysis, easy to extend for any data store

Project description

Pytest-stats

This library is collecting metadata about your test executions, and enables you to send it to a datastore of your liking.

Architecture

The library is designed in a hexagonal architecture in mind - separating data collection and reporting. There are two main parts to the code - metadata collection and reporting. the collection engine stores the metadata in pytest's stash (for session and for test) and uses pytest built-in hooks in order to populate the data and trigger the reporting. The reporting part is allowing reporters to register, then delegates the actual work to the registered reporters, enabling easy customization.

Implementation guide

In order to include pytest-stats capabilities in your code, all you need to do is to install the package pip install pytest-stats.
However, this will only provide you with a text report provided by the built-in DefaultTextReporter. In order to store the data in your own DB you'll need to:

  1. Create a new reporter (inherit the abstract ResultsReporter class)
  2. Register an instance of your reporter using the provided new hook pytest_stats_register_reporters.
    Example:
@pytest.hookimpl()
def pytest_stats_register_reporters(reporters:'ReportersRegistry'):
    reporters.register(MyReporter())

Implementation details

how is data collected and reported?

Most data is collected by hooking the following pytest-provided hooks:

  • pytest_sessionstart
  • pytest_sessionfinish
  • pytest_runtest_protocol
  • pytest_runtest_makereport
  • pytest_exception_interact

New hooks available

  • pytest_stats_register_reporters: used to register a new reporter. More than one reporter can be registered at the same hook.
    Invoked as part of pytest_configure
  • pytest_stats_env_data: Enables adding custom environment information to the session data.
    Invoked as part of pytest_sessionstart

Utility functions

  • get_test_session_data(session: 'Session') -> TestSessionData - can be used to fetch the session data in an arbitrary location
  • get_test_item_data(item: 'Item') -> TestItemData - can be used to fetch the current test data in arbitrary location. For instance, one can call get_test_item_data(item=request.node).foo="bar"

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_stats-1.0.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

pytest_stats-1.0.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file pytest_stats-1.0.1.tar.gz.

File metadata

  • Download URL: pytest_stats-1.0.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.5.0-1023-azure

File hashes

Hashes for pytest_stats-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5009d42c733cd67181dfea6f6fb88a63d3de7a4337a3509938c5adc74e176f2c
MD5 52a228c157e0301c72aee975cf9064d9
BLAKE2b-256 dad1fb4305ecd01583472ccd8407d74846e9bcf8e84aa47427c2ca38a50142ff

See more details on using hashes here.

File details

Details for the file pytest_stats-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: pytest_stats-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.5.0-1023-azure

File hashes

Hashes for pytest_stats-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 47e04dc2bcb2922ede2ecf30b7e0ff8c34be491e8a76daa035d20d2f47f5ad6b
MD5 05d71305b7cbec588b5c2524912431d8
BLAKE2b-256 ec6cc40a48e1238eb59bb65d9270aab64c62602bae6a474d2864ebca52b03615

See more details on using hashes here.

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