pytest-discover

Pytest plugin to record discovered tests in a file


Install
pip install pytest-discover==0.4.0

Documentation

pytest-discover

A plugin to write pytest collect output to either a JSON file or a JSON lines file.

Install

pip install pytest-discover

Usage

  • Use the --collect-report together with --collect-only option to collect tests and generate a JSON file:
pytest --collect-only --collect-report=collect.json
  • Use the --collect-log together with --collect-only option to collect tests and generate a JSON lines file:
pytest --collect-only --collect-log=collect.jsonl

Produced JSON output

The JSON file generated by --collect-report option follows the DiscoveryResult JSON Schema.

Python tools can also use the DiscoveryResult dataclass to parse the JSON file.

Produced JSON Lines output

The JSON lines file generated by --collect-log option contains one JSON object per line. Each line is a JSON object that follows the DiscoveryEvent JSON Schema.

This schema is the union of the different events that can be emitted by the discovery process:

Python tools can also use the DiscoveryEvent dataclass to parse the JSON lines file, as well as the differnt event classes:

Note: The code generation task is automated using rye run generate-models project script.

Alternatives

  • pytest-json-report: This plugin not only generates a JSON report with collected nodes, but also with test results. It is a more complete solution than pytest-discover. However, there is no JSON schema to validate the output, nor JSON lines output.

Credits

  • pytest-report-log: This package was heavily inspired by the report-log plugin.
  • pytest-csv: The pytest-csv plugin was also a source of inspiration.
  • datamodel-code-generator: The dataclasses generation from JSON schemas is performed using datamodel-code-generator.
  • rye: Project management is easy thanks to rye.