Exam is a Python toolkit for writing better tests. It aims to remove a lot of the boiler plate testing code one often writes, while still following Python conventions and adhering to the unit testing interface.
Aside from the obvious "does the code work?", writings tests has many additional goals and benefits:
If written semantically, reading tests can help demonstrate how the code is supposed to work to other developers.
If quick running, tests provide feedback during development that your changes are working or not having an adverse side effects.
If they're easy to write correctly, developers will write more tests and they will be of a higher quality.
Unfortunately, the common pattern for writing Python unit tests tends to not offer any of these advantages. Often times results in inefficient and unnecessarily obtuse testing code. Additionally, common uses of the mock library can often result in repetitive boiler-plate code or inefficiency during test runs.
exam aims to improve the state of Python test writing by providing a toolkit of useful functionality to make writing quick, correct and useful tests and as painless as possible.