Flake8 unittest assert method checker
Project description
flake8-assertive is a Flake8 extension that encourages using more specific unittest assertions beyond just the typical assertEqual(a, b) and assertTrue(x) methods. The alternate methods suggested by this extension perform more precise checks and provide better failure messages than the generic methods.
Original |
Suggestion |
Code |
---|---|---|
assertTrue(a == b) |
assertEqual(a, b) |
A500 |
assertTrue(a != b) |
assertNotEqual(a, b) |
A500 |
assertFalse(a == b) |
assertNotEqual(a, b) |
A500 |
assertFalse(a != b) |
assertEqual(a, b) |
A500 |
assertTrue(a < b) |
assertLess(a, b) |
A500 |
assertTrue(a <= b) |
assertLessEqual(a, b) |
A500 |
assertTrue(a > b) |
assertGreater(a, b) |
A500 |
assertTrue(a >= b) |
assertGreaterEqual(a, b) |
A500 |
assertTrue(a is b) |
assertIs(a, b) |
A501 |
assertTrue(a is not b) |
assertIsNot(a, b) |
A501 |
assertFalse(a is b) |
assertNotIs(a, b) |
A501 |
assertFalse(a is not b) |
assertIs(a, b) |
A501 |
assertTrue(a in b) |
assertIn(a, b) |
A501 |
assertFalse(a in b) |
assertNotIn(a, b) |
A501 |
assertTrue(isinstance(a, b)) |
assertIsInstance(a, b) |
A501 |
assertFalse(isinstance(a, b)) |
assertNotIsInstance(a, b) |
A501 |
assertEqual(a, None) |
assertIsNone(a) |
A502 |
assertNotEqual(a, None) |
assertIsNotNone(a) |
A502 |
assertTrue(a is None) |
assertIsNone(a) |
A502 |
assertTrue(a is not None) |
assertIsNotNone(a) |
A502 |
assertFalse(a is None) |
assertIsNotNone(a) |
A502 |
assertFalse(a is not None) |
assertIsNone(a) |
A502 |
assertEqual(a, True) |
assertTrue(a) |
A502 |
assertEqual(a, False) |
assertFalse(a) |
A502 |
Note that some suggestions are normalized forms of the original, such as when a double-negative is used (assertFalse(a != b) → assertEqual(a, b)). There aren’t suggestions for things like assertFalse(a > b), which may or may not be equivalent to assertLessEqual(a, b).
Installation
Install from PyPI using pip:
$ pip install flake8-assertive
The extension will be activated automatically by flake8. You can verify that it has been loaded by inspecting the flake8 --version string.
$ flake8 --version
3.5.0 (assertive: 1.0.1, ...) CPython 2.7.15 on Darwin
Error Codes
This extension adds three new error codes (using the A50 prefix):
A500: prefer {func} for ‘{op}’ comparisons
A501: prefer {func} for ‘{op}’ expressions
A502: prefer {func} instead of comparing to {obj}
Configuration
Configuration values are specified in the [flake8] section of your config file or as command line arguments (e.g. --assertive-snakecase).
assertive-snakecase: suggest snake_case assert method names (e.g. assert_true()) instead of the standard names (e.g. assertTrue())
assertive-test-pattern: fnmatch pattern for identifying unittest test files (and all other files will be skipped)
Changes
1.0.1 (2018-07-03)
Don’t make suggestions for assertions containing multiple comparison operations (e.g. assertTrue(a == b == c)).
1.0.0 (2018-06-04)
Suggest assertIsNone(a) for assertTrue(a is None), etc.
Recognize assertEquals() and assertNotEquals() as aliases for assertEqual() and assertNotEqual().
0.9.0 (2018-05-14)
Initial beta release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for flake8_assertive-1.0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca51b155a968fb65193d8ddfce76250b809d379e7026b6ba819eb37bf04d5fe1 |
|
MD5 | 2d1ff4d24036a8948cd07280f395c2a7 |
|
BLAKE2b-256 | 209aa88f714c8943dfc832714e677859f5998ca7f7e516fe4904c21091fec3cb |