Welcome to Flake8-AAA’s documentation¶
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.
pip, which will also install
$ pip install flake8-aaa
Invoke Flake8 on your test suite, in this case in the
$ 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
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) == ast.Assert assert len(checker.ast_tokens.tokens) == 8
More examples are in our test suite’s “good” files.
- 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.
- Compatibility list
- Test discovery
- Rules and error codes
- Controlling Flake8-AAA
- Release checklist