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.6+ 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:

  • PT001 use @pytest.fixture() over @pytest.fixture

  • 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}
    e.g. @pytest.mark.parametrize(('name1', 'name2'), ...) is ok, and @pytest.mark.parametrize('name1,name2', ...) is an error

  • PT007 wrong values type in @pytest.mark.parametrize, expected {expected_type}

  • PT008 use return_value= instead of patching with lambda
    e.g. mocker.patch('target', return_value=7) is OK, and mocker.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, and pytest.raises(ValueError) is an error.
    The exception list is controlled by the configuration option pytest-raises-require-match-for.

Installation

pip install flake8-pytest-style

Configuration

The plugin has the following configuration options:

  • pytest-raises-require-match-for
    Comma-separated list of exception names that require a match= parameter in a pytest.raises() call, as checked by PT011. 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.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-0.3.0.tar.gz (8.3 kB view hashes)

Uploaded Source

Built Distribution

flake8_pytest_style-0.3.0-py3-none-any.whl (9.0 kB view hashes)

Uploaded Python 3

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