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:
-
PT001 use @pytest.fixture() over @pytest.fixture
The preferred style is controlled by the configuration optionpytest-fixture-no-parentheses
-
PT002 configuration for fixture '{name}' specified via positional args, use kwargs
e.g.@pytest.fixture(scope='module')
is OK, and@pytest.fixture('module')
is an error -
PT003 scope='function' is implied in @pytest.fixture()
e.g.@pytest.fixture(scope='function')
should be replaced with@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}
For a single name the expected type is always a plain string. For multiple names the expected type is controlled by the configuration variablepytest-parametrize-names-type
. -
PT007 wrong values type in @pytest.mark.parametrize, expected {expected_type}
The expected type of the list of rows is controlled by the configuration variablepytest-parametrize-values-type
. The expected type of each row in case of multiple arguments is controlled by the configuration variablepytest-parametrize-values-row-type
. -
PT008 use return_value= instead of patching with lambda
e.g.mocker.patch('target', return_value=7)
is OK, andmocker.patch('target', lambda *args: 7)
is an error -
PT009 use a regular assert instead of unittest-style '{assertion}'
-
PT010 set the expected exception in pytest.raises()
-
PT011 set the match parameter in pytest.raises({exception})
e.g.pytest.raises(ValueError, match='exception text')
is OK, andpytest.raises(ValueError)
is an error.
The exception list is controlled by the configuration optionpytest-raises-require-match-for
. -
PT012 pytest.raises() block should contain a single simple statement
this forbids multiple statements and control flow structures withinpytest.raises()
blocks. -
PT013 found incorrect import of pytest, use simple 'import pytest' instead
Installation
pip install flake8-pytest-style
Configuration
The plugin has the following configuration options:
-
pytest-fixture-no-parentheses
Boolean flag specifying whether@pytest.fixture()
without parameters should have parentheses, as checked byPT001
.
If the option is set to false (the default),@pytest.fixture()
is valid and@pytest.fixture
is an error.
If set to true,@pytest.fixture
is valid and@pytest.fixture()
is an error. -
pytest-parametrize-names-type
Expected type for multiple argument names in@pytest.mark.parametrize
, as checked byPT006
. The following values are supported:csv
— a comma-separated list, e.g.@pytest.mark.parametrize('name1,name2', ...)
tuple
(default) — e.g.@pytest.mark.parametrize(('name1', 'name2'), ...)
list
— e.g.@pytest.mark.parametrize(['name1', 'name2'], ...)
-
pytest-parametrize-values-type
Expected type for the list of values rows in@pytest.mark.parametrize
, as checked byPT007
. The following values are supported:tuple
— e.g.@pytest.mark.parametrize('name', (1, 2, 3))
list
(default) — e.g.@pytest.mark.parametrize('name', [1, 2, 3])
-
pytest-parametrize-values-row-type
Expected type for each row of values in@pytest.mark.parametrize
in case of multiple parameters, as checked byPT007
. The following values are supported:tuple
(default) — e.g.@pytest.mark.parametrize(('name1', 'name2'), [(1, 2), (3, 4)])
list
— e.g.@pytest.mark.parametrize(('name1', 'name2'), [[1, 2], [3, 4]])
-
pytest-raises-require-match-for
Comma-separated list of exception names that require amatch=
parameter in apytest.raises()
call, as checked byPT011
. By default the list contains the following exceptions:BaseException
,Exception
ValueError
OSError
,IOError
,EnvironmentError
,socket.error
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
...
0.6.0 - 2020-03-21
- add configuration option
pytest-parametrize-names-type
forPT006
- add configuration options
pytest-parametrize-values-type
andpytest-parametrize-values-row-type
forPT007
0.5.0 - 2020-03-09
- add configuration option
pytest-fixture-no-parentheses
forPT001
- add
PT013
(checks forfrom
-imports frompytest
)
0.4.0 - 2020-03-09
- add
PT012
(checks for multiple statements inwith 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
- add
PT010
andPT011
(checks forpytest.raises
parameters)
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
Hashes for flake8-pytest-style-0.6.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 381c5791507db8e5be47b9117529a3157a339f2dd27f0728d60e6f14e629d327 |
|
MD5 | 21898c05b284c8fcc480fb2b847c65c4 |
|
BLAKE2b-256 | 3dfe64400c3b41f68045666f58ce9cf83dfbe3c9dae01a567eb03f926afefe27 |
Hashes for flake8_pytest_style-0.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1314b3995d9aff89038a8860f487671fb835269f9486368478dbb1267f05868a |
|
MD5 | f9c1f7f303d7cf68a617ef2b15cd5213 |
|
BLAKE2b-256 | e5d099dffc8af14fc0c1d89c7423a62a13c5ccbec3ed34c08e3703e161de1d35 |