A flake8 plugin checking common style issues or inconsistencies with pytest-based tests.
Project description
flake8-pytest-style
Description
A flake8
plugin checking common style issues or inconsistencies with pytest
-based tests.
Currently the following errors are reported:
Code | Description |
---|---|
PT001 | use @pytest.fixture over @pytest.fixture() (configurable by pytest-fixture-no-parentheses ) |
PT002 | configuration for fixture '{name}' specified via positional args, use kwargs |
PT003 | scope='function' is implied in @pytest.fixture() |
PT004 | fixture '{name}' does not return anything, add leading underscore |
PT005 | fixture '{name}' returns a value, remove leading underscore |
PT006 | wrong name(s) type in @pytest.mark.parametrize, expected {expected_type} (configurable by pytest-parametrize-names-type ) |
PT007 | wrong values type in @pytest.mark.parametrize, expected {expected_type} (configurable by pytest-parametrize-values-type and pytest-parametrize-values-row-type ) |
PT008 | use return_value= instead of patching with lambda |
PT009 | use a regular assert instead of unittest-style '{assertion}' |
PT010 | set the expected exception in pytest.raises() |
PT011 | pytest.raises({exception}) is too broad, set the match parameter or use a more specific exception (configurable by pytest-raises-require-match-for ) |
PT012 | pytest.raises() block should contain a single simple statement |
PT013 | found incorrect import of pytest, use simple 'import pytest' instead |
PT014 | found duplicate test cases {indexes} in @pytest.mark.parametrize |
PT015 | assertion always fails, replace with pytest.fail() |
PT016 | no message passed to pytest.fail() |
PT017 | found assertion on exception {name} in except block, use pytest.raises() instead |
PT018 | assertion should be broken down into multiple parts |
PT019 | fixture {name} without value is injected as parameter, use @pytest.mark.usefixtures instead |
PT020 | @pytest.yield_fixture is deprecated, use @pytest.fixture |
PT021 | use yield instead of request.addfinalizer |
PT022 | no teardown in fixture {name}, use return instead of yield |
PT023 | use @pytest.mark.foo over @pytest.mark.foo() (configurable by pytest-mark-no-parentheses ) |
PT024 | pytest.mark.asyncio is unnecessary for fixtures |
PT025 | pytest.mark.usefixtures has no effect on fixtures |
PT026 | useless pytest.mark.usefixtures without parameters |
PT027 | use pytest.raises() instead of unittest-style '{assertion}' |
PT028 | test function {name} has default value for argument {arg}, remove it |
PT029 | set the expected warning in pytest.warns() |
PT030 | pytest.warns({warning}) is too broad, set the match parameter or use a more specific warning (configurable by pytest-warns-require-match-for ) |
PT031 | pytest.warns() block should contain a single simple statement |
Installation
pip install flake8-pytest-style
Configuration
The plugin has the following configuration options:
pytest-fixture-no-parentheses
— see PT001pytest-parametrize-names-type
— see PT006pytest-parametrize-values-type
— see PT007pytest-parametrize-values-row-type
— see PT007pytest-raises-require-match-for
— see PT011pytest-mark-no-parentheses
— see PT023pytest-warns-require-match-for
— see PT030
For developers
Install deps and setup pre-commit hook
make init
Run linters, autoformat, tests etc.
make format lint test
Bump new version
make bump_major
make bump_minor
make bump_patch
License
MIT
Change Log
Unreleased
...
2.1.0 - 2025-01-10
- support
reason=
kwarg inpytest.fail
for PT016 - add PT028 (checks for default values in test functions)
- add PT029 (checks for
pytest.warns
without expected warning) - add PT030 (checks for too broad
pytest.warns
clauses) - add PT031 (checks for multiple statements in
pytest.warns
blocks) - require at least Python 3.9
- support Python 3.13
2.0.0 - 2024-04-01
- BREAKING: invert default values for
pytest-fixture-no-parentheses
andpytest-mark-no-parentheses
to conform withpytest
official style - require at least Python 3.8.1
- support Python 3.12
1.7.2 - 2023-02-15
- fix false positive for PT009 on
pytest.fail
1.7.1 - 2023-02-15
1.7.0 - 2023-02-09
- require at least Python 3.7.2
- support Python 3.11
- add PT027 (checks for unittest-style
assertRaises
)
1.6.0 - 2021-12-23
- require at least Python 3.6.2
- expose
py.typed
file
1.5.1 - 2021-11-05
- better wording for PT011
- support Python 3.10
1.5.0 - 2021-06-18
- add PT025 (checks for erroneous
pytest.mark.usefixtures
on fixtures) - add PT026 (checks for
pytest.mark.usefixtures
without parameters)
1.4.4 - 2021-06-17
1.4.2 - 2021-05-24
- update
flake8-plugin-utils
version to improve stability
1.4.1 - 2021-04-01
- fix argparse-related warnings
1.4.0 - 2021-03-14
- add PT023 (checks for parentheses consistency in
pytest.mark
usage) - add PT024 (checks for unnecessary
pytest.mark.asyncio
on fixtures) - fix PT004, PT005 firing on abstract fixtures
- fix PT012 firing on
with
statements containing a singlepass
1.3.0 - 2020-08-30
- add PT022 (checks for
yield
fixtures without teardown)
1.2.3 - 2020-08-06
- update
flake8-plugin-utils
dependency to fix encoding problems on Windows
1.2.2 - 2020-07-23
1.2.1 - 2020-06-15
- fix PT021 for factory fixtures (#46)
1.2.0 - 2020-06-12
- support scoped
mocker
fixtures frompytest-mock
for PT008 - check for positional-only lambda arguments in PT008
- add PT020 (checks for
pytest.yield_fixture
) - add PT021 (checks for
request.addfinalizer
) - add documentation pages for all rules
1.1.1 - 2020-04-17
- fix PT011 not reporting
match=''
as a violation
1.1.0 - 2020-04-14
- add PT015 (checks for
assert False
) - add PT016 (checks for
pytest.fail()
without message) - add PT017 (checks for assertions on exceptions in
except
blocks) - add PT018 (checks for composite assertions)
- add PT019 (checks for fixtures without value injected as parameters)
1.0.0 - 2020-03-26
- add PT014 (checks for duplicate test cases in
@pytest.mark.parametrize
)
0.6.0 - 2020-03-21
- add configuration option
pytest-parametrize-names-type
for PT006 - add configuration options
pytest-parametrize-values-type
andpytest-parametrize-values-row-type
for PT007
0.5.0 - 2020-03-09
- add configuration option
pytest-fixture-no-parentheses
for PT001 - add PT013 (checks for
from
-imports frompytest
)
0.4.0 - 2020-03-09
- add PT012 (checks for multiple statements in
with pytest.raises()
)
0.3.1 - 2020-03-09
- fix default value of
pytest-raises-require-match-for
config option
0.3.0 - 2020-03-09
0.2.0 - 2020-03-01
- add PT009 (ported from flake8-pytest)
0.1.3 - 2019-05-24
- add
yield
fixtures support - fix changelog entry for 0.1.2
0.1.2 - 2019-05-23
- fix parametrize checkers not working in decorators
0.1.1 - 2019-05-23
- update PyPI description
0.1.0 - 2019-05-23
- initial
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file flake8_pytest_style-2.1.0.tar.gz
.
File metadata
- Download URL: flake8_pytest_style-2.1.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.0 CPython/3.13.1 Darwin/24.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
fee6befdb5915d600ef24e38d48a077d0dcffb032945ae0169486e7ff8a1079a
|
|
MD5 |
cad9d2622a38cea0fa32ce95e5d710f5
|
|
BLAKE2b-256 |
5ab2f959c7a1e60592c2b828e88a80a0d54a88f68055233906d8fbdd5babe43e
|
File details
Details for the file flake8_pytest_style-2.1.0-py3-none-any.whl
.
File metadata
- Download URL: flake8_pytest_style-2.1.0-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.0 CPython/3.13.1 Darwin/24.2.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
a0d6dddcd533bfc13f19b8445907be0330c5e6ccf7090bcd9d5fa5a0b1b65e71
|
|
MD5 |
a8a1771f30e8700f66f9efbb10045496
|
|
BLAKE2b-256 |
ef9a15831baaae4ef0d003c9d789fef25b6333c095e15d4e9983dfaf20546108
|