You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Create a Python file, add comments to lines where you expect mypy to produce an error, run mypy_test, and it will check if actual errors are the same as you expect.
Features:
Flexible: supports every feature supported by mypy, does not enforce a project structure.
Fast: mypy gets run only once for all files at once. Also, no patching, no config generation.
Easy to learn: run mypy_test with the same arguments as you would run mypy, and it just works.
Lightweight: no dependencies except mypy.
python3 -m pip install mypy-test
Usage
Write a file you want to test, add comments to the lines you expect to fail:
a=1reveal_type(a) # R: builtins.int
Run the tool:
python3 -m mypy_test example.py
Writing the comments
The comments have the following format: SEVERITY: MESSAGE.
Severity is a one-letter violation severity as reported by mypy.
F for "fatal"
E for "error"
W for "warning"
N for "note"
R is a shorthand for N: Revealed type is "..."
Comment can be on the same line as the violation or on the line before.
Example:
var=1.1reveal_type(var) # R: builtins.float# E: Incompatible types in assignment (expression has type "str", variable has type "float")var=""
Tips:
The fastest way to know the severity and the message is to run mypy_test on the code and then copy-paste the resulting message.
Make separate functions for every test case, so it can have a nice description and a clean namespace.
Place all test files into one directory. For example, /types/ or /tests/types/.