pytest-big-dill
The pytest plugin for Big Dill — tooling for pytest-bdd that treats the feature file as the specification.
pip install pytest-big-dill
It registers with pytest automatically. Install it into the environment your tests run in.
What it does
- Feature metadata — attaches the
.featurepath, scenario name, tags and scenario line to each collected pytest-bdd item, so a host can present tests grouped by feature file rather than by Python module. - Custom scenario names — name outline rows something meaningful (
[E01]) rather than a concatenation of parameter values. - Custom statuses — report your own outcome strings (
waiting,knownError) for a host to map onto its own test states. - Linting —
pytest --bdd-lintstatically checks feature files: typed step parameter validation, plus any rules you add. - Reporting — sends discovery and execution payloads to a host over a local pipe when one is listening, and is inert otherwise.
Where this fits
pytest-big-dill |
this package — required; it is what knows about your scenarios |
big-dill |
the VS Code extension |
@nokout/big-dill-core |
the headless engine the extension is built on |
Useful on its own as a CI lint gate; the editor experience needs the extension too.
Hooks
Implement any of these in your conftest.py:
def pytest_big_dill_test_name(scenario_name, example_params, feature_name, feature_path):
"""A display name for a scenario, or None to keep the default."""
if example_params.get("id"):
return f"{scenario_name} [{example_params['id']}]"
return None
def pytest_big_dill_custom_status(report, config):
"""A custom status string for a result, or None."""
if getattr(report, "wasxfail", None):
return "knownError"
return None
Two more add your own lint rules, each returning a list of LintDiagnostic:
from pytest_big_dill.lint_types import LintDiagnostic
def pytest_big_dill_lint_outline(scenario, examples):
"""Once per Scenario Outline during --bdd-lint."""
def pytest_big_dill_lint_scenario(scenario):
"""Per scenario, and per interpolated Examples row."""
Full reference, including typed step parameters: developer guide.
Linting
pytest --bdd-lint # every discovered feature file
pytest --bdd-lint path.feature
Exits non-zero on any error-severity diagnostic, so it works as a CI gate.
This package contributes the runtime half of the lint story: typed step parameter validation, undefined-step detection, and whatever your own hooks add. Structural rules about the Gherkin itself — duplicate scenario names, unused Examples columns, outlines with a single row — come from the engine and are listed with everything else in the lint rules reference.
Documentation
- Developer guide — hookspecs, typed steps, custom lint rules
- Lint rules — every diagnostic, across all three packages
- Repository
License
MIT. See LICENSE and
THIRD-PARTY-NOTICES.md.
Metadata
Release files for pytest-big-dill 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_big_dill-0.1.0.tar.gz | 31.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytest_big_dill-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.4 kB
Release files / pytest_big_dill-0.1.0.tar.gz
| Download URL | pytest_big_dill-0.1.0.tar.gz |
|---|---|
| Size | 31.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4e25fe800579af9ea0cf2ab3564956f23c804c9985bb9df07ebe153bfffe8938
|
|
BLAKE2b-256 checksum How to use checksums |
398e5ad46b19a09ca946cbefd7bdb9e6dda0eebc2c5b9093cc39fb69d6314523
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency logRelease files / pytest_big_dill-0.1.0-py3-none-any.whl
| Download URL | pytest_big_dill-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
12542ad0640dae7919d2017600d845f01b20d10711bcd39075e1d6accc29f823
|
|
BLAKE2b-256 checksum How to use checksums |
e98bf6ce318e5d0ad839499b3c32842aa57e8af7c89df5b918f113be65bab1b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.
Transparency log