pytest extensions for OpenTelemetry
Project description
otel-extensions-pytest: A pytest extension for OpenTelemetry
otel-extensions-pytest
is a pytest plugin that will automatically instrument a pytest-based test session,
wrapping the test session in a span and wrapping each test in a child span.
Dependencies
- Python >= 3.6
- pytest >= 6.2
Installation
pip install
You can install through pip using:
pip install otel-extensions-pytest
(you may need to run pip
with root permission: sudo pip install otel-extensions-pytest
)
Setuptools
Install via Setuptools.
python setup.py install --user
(or sudo python setup.py install
to install the package for all users)
Usage
Enable the plugin by adding
pytest_plugins = ("otel_extensions",)
to your conftest.py
, or by adding the option -p otel_extensions
to the pytest command line.
For tracing to be enabled, you need to specify a trace receiver endpoint using the command-line option
--otel-endpoint
or by setting the environment variable OTEL_EXPORTER_OTLP_ENDPOINT
.
e.g. --otel-endpoint http://localhost:4317/
The full set of options are shown here:
Command-line Option | Environment Variable | Description |
---|---|---|
--otel_service_name |
OTEL_SERVICE_NAME |
Name of resource/service for traces |
--otel_session_name |
OTEL_SESSION_NAME |
Name of parent session span |
--otel_endpoint |
OTEL_EXPORTER_OTLP_ENDPOINT |
OTLP Receiver Endpoint |
--otel_protocol |
OTEL_EXPORTER_OTLP_PROTOCOL |
protocol for OTLP receiver (supported: gprc , http/protobuf , custom ) |
--otel_processor_type |
OTEL_PROCESSOR_TYPE |
Span Processor type (batch: use BatchSpanProcessor , simple: use SimpleSpanProcessor |
--otel_traceparent |
TRACEPARENT |
Parent span id. Will be injected into current context (useful when running automated tests using the OpenTelemetry Jenkins plugin) |
n/a | OTEL_EXPORTER_OTLP_CERTIFICATE |
path to CA bundle for verifying TLS cert of receiver endpoint |
n/a | OTEL_EXPORTER_CUSTOM_SPAN_EXPORTER_TYPE |
Custom span exporter class (needed if protocol set to custom ) |
Additional Features
@instrumented_fixture
decorator
You can decorate fixtures by using the @instrumented_fixture
decorator. If the fixture is a generator (i.e. has a yield
statement), separate spans will be created for the setup and teardown phases.
from otel_extensions_pytest import instrumented_fixture
# note: all options of pytest.fixture() are supported (autouse, etc)
@instrumented_fixture(scope="function")
def my_fixture():
""" Span is automatically created using `my_fixture` as span name """
return "foo"
@instrumented_fixture(scope="function")
def my_generator_fixture():
# A span named `my_generator_fixture (setup)` is automatically created for this section
time.sleep(5)
yield "foo"
# A span named `my_generator_fixture (teardown)` is automatically created for this section
time.sleep(5)
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
Built Distribution
Hashes for otel-extensions-pytest-0.1.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e6e8a3a00b27c1a0232e1131b505954974abf4b0efa646435e82178c75cedf3 |
|
MD5 | 3fb924aa44fcae19272df745bae2211e |
|
BLAKE2b-256 | 6dfdb46e75dd0dae0645bc393fce5cf2ef91808f567634b12e3d7792e6523c94 |
Hashes for otel_extensions_pytest-0.1.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fb40175d1562ecf54243de768f116bb58a493ebdfb29adf154200e1300a9d43 |
|
MD5 | a4dbfb961022a8461e2012ec18f4ada9 |
|
BLAKE2b-256 | 5e3f4dea4bc94df4857597a10f0dec0ef3ac6f97439c43de6cc4b3d47c43be51 |