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:
- Create a new reporter (inherit the abstract
ResultsReporter
class) - 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 ofpytest_configure
pytest_stats_env_data
: Enables adding custom environment information to the session data.
Invoked as part ofpytest_sessionstart
Utility functions
get_test_session_data(session: 'Session') -> TestSessionData
- can be used to fetch the session data in an arbitrary locationget_test_item_data(item: 'Item') -> TestItemData
- can be used to fetch the current test data in arbitrary location. For instance, one can callget_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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5009d42c733cd67181dfea6f6fb88a63d3de7a4337a3509938c5adc74e176f2c |
|
MD5 | 52a228c157e0301c72aee975cf9064d9 |
|
BLAKE2b-256 | dad1fb4305ecd01583472ccd8407d74846e9bcf8e84aa47427c2ca38a50142ff |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47e04dc2bcb2922ede2ecf30b7e0ff8c34be491e8a76daa035d20d2f47f5ad6b |
|
MD5 | 05d71305b7cbec588b5c2524912431d8 |
|
BLAKE2b-256 | ec6cc40a48e1238eb59bb65d9270aab64c62602bae6a474d2864ebca52b03615 |