Skip to main content

A linter for Python tests

Project description

Travis build Read the Docs PyPI PyPI - Python Version flake8-aaa is licensed under the MIT License

Flake8-AAA

A linter for Python tests.

Flake8-AAA enforces simple formatting of your test suite making it more consistent and easier to grok, especially across teams.

Installation and usage

Flake8-AAA is a Flake8 plugin.

Install flake8-aaa with pip, which will also install flake8:

$ pip install flake8-aaa

Invoke Flake8 on your test suite, in this case in the tests directory:

$ flake8 tests

Errors returned by Flake8-AAA have the AAA code, for example:

tests/block/test_init.py:14:1: AAA02 multiple Act blocks found in test

Arrange Act Assert

Tests are linted against the Arrange Act Assert pattern.

TL;DR following the AAA pattern means tests are laid out like this:

def test():
    """
    __docstring__
    """
    <ARRANGE block> # set up of the system under test (SUT)

    <ACT block> # perform a single action on the SUT

    <ASSERT block> # check that the SUT changed as expected

For example:

def test(tmpdir):
    """
    Checker is able to parse provided file at load time
    """
    target_file = tmpdir.join('test.py')
    target_file.write('assert 1 + 2 == 3\n')
    tree = ast.parse(target_file.read())
    checker = Checker(tree, ['assert 1 + 2 == 3\n'], target_file.strpath)

    result = checker.load()

    assert result is None
    assert len(checker.tree.body) == 1
    assert type(checker.tree.body[0]) == ast.Assert
    assert len(checker.ast_tokens.tokens) == 8

More examples are in our test suite’s “good” files.

Compatibility

  • Pytest and unittest supported.

  • Compatible with Black and yapf formatted code.

  • Current release works with the latest versions of Python 3 (3.5, 3.6, 3.7 and 3.8). Older releases have support for older Pythons.

See the Compatibility list for more info.

Resources

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-aaa-0.7.1.tar.gz (13.8 kB view hashes)

Uploaded Source

Built Distribution

flake8_aaa-0.7.1-py3-none-any.whl (16.5 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