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
-
PT014 found duplicate test cases {indexes} in @pytest.mark.parametrize
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
...
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
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-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82b7c6e509d759fb91d6e0023dbba2e471dac3adf2c4367f54a1b8ea02e65531 |
|
MD5 | dd3e3c58a7901c375c3edb0e75a98991 |
|
BLAKE2b-256 | a7c4b5f8f85ec8141598e9e5ee10ee26867ccb5ffa7c048590e9404f1372f019 |
Hashes for flake8_pytest_style-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d04fcd9a6237a897c46fd1548a85aa84258fb45bfde6ae8d497ceaade722543c |
|
MD5 | 833c4edb843b9070731610dbb9dbd02a |
|
BLAKE2b-256 | 2afb9233bd1163c2ab9b353c3128d2dc38fb3d76bc7c77bd598dc2039e0420f9 |