Library pytest-spec is a pytest plugin to display test execution output like a SPECIFICATION.
- Format output to look like specification.
- Group tests by classes and files
- Failed, passed and skipped are marked and colored.
- Remove test_ and underscores for every test.
- It is possible to use docstring summary instead of test name.
- Supports function based, class based test.
- Supports describe like tests.
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}:
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:
- result - place for indicator
- name - name of test
- docstring_summary - first line from test docstring if 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.
You can configure the indicator displayed when test passed.
; since pytest 4.6.x
[pytest]
spec_success_indicator = ✓
; legacy pytest
[tool:pytest]
spec_success_indicator = ✓
You can configure the indicator displated when test failed.
; since pytest 4.6.x
[pytest]
spec_failure_indicator = ✗
; legacy pytest
[tool:pytest]
spec_failure_indicator = ✗
You can configure the indicator displated when test is skipped.
; since pytest 4.6.x
[pytest]
spec_skipped_indicator = ?
; legacy pytest
[tool:pytest]
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.
; since pytest 4.6.x
[pytest]
spec_ignore = FLAKE8
; legacy pytest
[tool:pytest]
spec_ignore = FLAKE8
; since pytest 4.6.x
[pytest]
spec_indent = " "
; legacy pytest
[tool:pytest]
spec_indent = " "
All versions of library are available on official pypi server.
pip install pytest-spec
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-2021 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.