Library pytest-spec is a pytest plugin to display test execution output like a SPECIFICATION.
You can configure the format of the test headers by specifying a format string in your ini-file:
; since pytest 4.6.x
[pytest]
spec_header_format = {module_path}:
; legacy pytest
[tool:pytest]
spec_header_format = {module_path}:
or in your pyproject.toml file:
[tool.pytest.ini_options]
spec_header_format = "{module_path}:"
In addition to the {path}
and {class_name}
replacement fields, there is also {test_case}
that holds a more human readable name.
You can configure the format of the test results by specifying a format string in your ini-file:
3 variables are available:
; since pytest 4.6.x
[pytest]
spec_test_format = {result} {name}
; legacy pytest
[tool:pytest]
spec_test_format = {result} {name}
or
; since pytest 4.6.x
[pytest]
spec_test_format = {result} {docstring_summary}
; legacy pytest
[tool:pytest]
spec_test_format = {result} {docstring_summary}
In second example where docstring is not available the name will be added to spec output.
Similar configuration could be done in your pyproject.toml file:
[tool.pytest.ini_options]
spec_test_format = "{result} {name}"
or
[tool.pytest.ini_options]
spec_test_format = "{result} {docstring_summary}"
You can configure the indicator displayed when test passed.
ini-file
; since pytest 4.6.x
[pytest]
spec_success_indicator = ✓
; legacy pytest
[tool:pytest]
spec_success_indicator = ✓
or pyproject.toml
[tool.pytest.ini_options]
spec_success_indicator = "✓"
You can configure the indicator displated when test failed.
ini-file
; since pytest 4.6.x
[pytest]
spec_failure_indicator = ✗
; legacy pytest
[tool:pytest]
spec_failure_indicator = ✗
or pyproject.toml
[tool.pytest.ini_options]
spec_failure_indicator = "✗"
You can configure the indicator displated when test is skipped.
ini-file
; since pytest 4.6.x
[pytest]
spec_skipped_indicator = »
; legacy pytest
[tool:pytest]
spec_skipped_indicator = »
or pyproject.toml
[tool.pytest.ini_options]
spec_skipped_indicator = "»"
Comma-separated settings to ignore/hide some tests or output from from plugins like FLAKE8 or ISORT. Any test which contain provided string will be ignored in output spec.
ini-file
; since pytest 4.6.x
[pytest]
spec_ignore = FLAKE8
; legacy pytest
[tool:pytest]
spec_ignore = FLAKE8
or pyproject.toml
[tool.pytest.ini_options]
spec_ignore = "FLAKE8"
ini-file
; since pytest 4.6.x
[pytest]
spec_indent = " "
; legacy pytest
[tool:pytest]
spec_indent = " "
or pyproject.toml
[tool.pytest.ini_options]
spec_indent = " "
All versions of library are available on official pypi server.
pip install pytest-spec
cd pytest-spec
pip install -e .
cd pytest-spec
pip install -e ".[test]"
cd pytest-spec
pip install -e ".[deploy]"
Please feel free to present your idea by code example (pull request) or reported issues.
pytest-spec - pytest plugin to display test execution output like a SPECIFICATION.
Copyright (C) 2014-2024 Pawel Chomicki
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.