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

...

2.0.0 - 2024-04-01

  • BREAKING: invert default values for pytest-fixture-no-parentheses and pytest-mark-no-parentheses to conform with pytest official style
    • If you get a lot of PT001 or PT023 violations after upgrading, consider setting explicit values for these configuration options
  • 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

  • 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-2.0.0.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

flake8_pytest_style-2.0.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: flake8_pytest_style-2.0.0.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.9.9 Linux/5.15.146.1-microsoft-standard-WSL2

File hashes

Hashes for flake8_pytest_style-2.0.0.tar.gz
Algorithm Hash digest
SHA256 919c328cacd4bc4f873ea61ab4db0d8f2c32e0db09a3c73ab46b1de497556464
MD5 de1cb4999ebe09d00312aaf441c0b712
BLAKE2b-256 51315bb7e30878e8a1783930681767cae29a2304d9006548ab4ad905c121ff88

See more details on using hashes here.

File details

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

File metadata

  • Download URL: flake8_pytest_style-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.9.9 Linux/5.15.146.1-microsoft-standard-WSL2

File hashes

Hashes for flake8_pytest_style-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abcb9f56f277954014b749e5a0937fae215be01a21852e9d05e7600c3de6aae5
MD5 34cdfd47d3d02bdb07b0620b6fe4fae6
BLAKE2b-256 029603d935ca9383b8df39b7db6a70da6e7aa856b33081f87caed3e18adf0cc5

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