Skip to main content

A flake8 plugin checking common style issues or inconsistencies with pytest-based tests.

Project description

flake8-pytest-style

pypi Python: 3.7+ 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:

  • pytest-fixture-no-parentheses — see PT001
  • pytest-parametrize-names-type — see PT006
  • pytest-parametrize-values-type — see PT007
  • pytest-parametrize-values-row-type — see PT007
  • pytest-raises-require-match-for — see PT011
  • pytest-mark-no-parentheses — see PT023

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.7.1 - 2023-02-15

  • update list of unittest-style assert methods for PT009/PT027

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

  • fix PT023 not checking marks in classes
  • fix PT004 incorrectly firing on fixtures with yield from

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 single pass

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

  • fix PT004/PT005 inspecting returns of nested functions

1.2.1 - 2020-06-15

  • fix PT021 for factory fixtures (#46)

1.2.0 - 2020-06-12

  • support scoped mocker fixtures from pytest-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 and pytest-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 from pytest)

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

  • add PT010 and PT011 (checks for pytest.raises parameters)

0.2.0 - 2020-03-01

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flake8_pytest_style-1.7.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

flake8_pytest_style-1.7.1-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file flake8_pytest_style-1.7.1.tar.gz.

File metadata

  • Download URL: flake8_pytest_style-1.7.1.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.0 CPython/3.9.5 Darwin/22.2.0

File hashes

Hashes for flake8_pytest_style-1.7.1.tar.gz
Algorithm Hash digest
SHA256 c0c94a60e0585b0014cc8fe286647e7659cec170ab980ad42fe0cb3ee473f077
MD5 623b5ab1f352adf3631c138b01fa5270
BLAKE2b-256 4670ee7d3cfdc4d10a0cc0c29db52b94865f57d9962e54598f4d5b98faaad35c

See more details on using hashes here.

File details

Details for the file flake8_pytest_style-1.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_pytest_style-1.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 34973e9da1004934e0b27524141b939bb2ef14bed5f17cfa4bfa8e1f42450ed8
MD5 f0869df66476e3bd0c1bec4beefe5fdc
BLAKE2b-256 54b20cb0cc6639cbc3a56ee390b7b67da5b1ffcdc28ab792550ab4ba48e0e40d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page