m-burst / flake8-pytest-style

A flake8 plugin checking common style issues or inconsistencies with pytest-based tests.
MIT License
230 stars 16 forks source link
flake8 flake8-extensions flake8-plugin flake8-plugins pytest python3

flake8-pytest-style

pypi Python: 3.8+ Downloads Build Status Code coverage License: MIT Code style: black

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}'

Installation

pip install flake8-pytest-style

Configuration

The plugin has the following configuration options:

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.0.0 - 2024-04-01

1.7.2 - 2023-02-15

1.7.1 - 2023-02-15

1.7.0 - 2023-02-09

1.6.0 - 2021-12-23

1.5.1 - 2021-11-05

1.5.0 - 2021-06-18

1.4.4 - 2021-06-17

1.4.2 - 2021-05-24

1.4.1 - 2021-04-01

1.4.0 - 2021-03-14

1.3.0 - 2020-08-30

1.2.3 - 2020-08-06

1.2.2 - 2020-07-23

1.2.1 - 2020-06-15

1.2.0 - 2020-06-12

1.1.1 - 2020-04-17

1.1.0 - 2020-04-14

1.0.0 - 2020-03-26

0.6.0 - 2020-03-21

0.5.0 - 2020-03-09

0.4.0 - 2020-03-09

0.3.1 - 2020-03-09

0.3.0 - 2020-03-09

0.2.0 - 2020-03-01

0.1.3 - 2019-05-24

0.1.2 - 2019-05-23

0.1.1 - 2019-05-23

0.1.0 - 2019-05-23