Skip to main content

Multi-process logs handling and other helpers for pytest

Project description

pytest-multilog

A pytest plugin to persist logs from parallel test processes (and other helpers)

Usage

To use the multilog feature, a test class just needs to inherit from the TestHelper class:

from pytest_multilog import TestHelper

class TestCustom(TestHelper):
    def test_custom(self):
        # Custom test implementation
        ...

The TestHelper class declares a logs fixture which will be automatically used by its children classes.

Behavior and attributes

Root folder

The TestHelper class provides a root_folder property, matching with the pytest root folder.

Output folder

The TestHelper class provides a output_folder property, where all files will be written. It's set to output_folder / "out" / "tests"

Test name

Each test is associated to a name (provided in TestHelper.test_name), computed from the file name, the class name and the method name.

E.g. for the snippet above, if stored in a test_custom.py file, the test name will be: test_custom_TestCustom_test_custom.

Current worker

In multi-process environment (pytest was invoked with -n X argument), the current worker name is provided in TestHelper.worker attribute. It's set to "master" in single-process environment.

The class also provides a TestHelper.worker_index attribute, giving the working index as an integer value (will be set to 0 for "master").

Test folder

Test logs will be written in a pytest.log file (path provided in TestHelper.test_logs), stored in each test folder (provided in TestHelper.test_folder attribute):

  • While the test is running, it's set to TestHelper.output_root / "__running__" / TestHelper.worker / TestHelper.test_name
  • Once the test is terminated, the folder is moved directly under the output root one.

It means that during the test execution, it's possible to check which test is running on which worker (easing troubleshooting situations where a given worker is blocked)

Checking logs

It is possible to verify if some strings are present in the current test log, by using the TestHelper.check_logs method. It takes as input argument:

  • either a simple string/Pattern or a list of strings/Patterns:
    • strings will be simply checked to be contained in the whole log
    • Patterns will be searched line by line (more flexible, but slower)
  • an optional timeout
  • a check_order parameter to verify patterns order (default if False)

The method will assert if all inputs are found in the log (within the expected timeout, if any).

By default, expected patterns order doesn't matter. If check_order parameter is set to True, patterns will be expected in the input order, and check will fail if the order doesn't match.

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-multilog-1.4.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

pytest_multilog-1.4-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file pytest-multilog-1.4.tar.gz.

File metadata

  • Download URL: pytest-multilog-1.4.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.14

File hashes

Hashes for pytest-multilog-1.4.tar.gz
Algorithm Hash digest
SHA256 d55c06aa43ac2e501c4d1bb99589ef354639d3c887965cdcd4284a6616a65ec1
MD5 e29e1d1e10eece40fa59170957086c6a
BLAKE2b-256 f5e0ff4fb8f0cb07d5e1e9220e7b7d6c04f83d1d6e8126e251b05e84fe8c0253

See more details on using hashes here.

File details

Details for the file pytest_multilog-1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_multilog-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fb32017ce07e7c26236db5c901d2041a3180794ddb4279d9f375051883932347
MD5 6caee8dcc0a7fd55822342c926439b01
BLAKE2b-256 9dbc161127dd928f2666045d4ca1b13eff11014f8141514b35a6fdcfe4489c3e

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