Pytest - Test Framework¶
Main point
Pytest is a programmer-friendly Python test framework. It makes it easy to write small tests, yet scales to support complex cases.
Major
pytestfeatures:- Battle-tested and mature.
- Informative test failures.
- Less verbose (plain
assertvs.self.assertEqual,self.assertGreaterEqual, etc.). - Classes are not required.
- A far more convenient way to write setup & teardown functions with fixtures.
- Parameterized tests.
- Fantastic test runner (a.o. marker- and name-based test selection).
- Rich plugin architecture.
- Auto-discovery of test modules and functions.
- Runs
unittestandnosetest suites out-of-the-box.
You can easily set test runner default flags by defining them in a configuration file called
pytest.ini. You can find an example in Big-Bang-py.Recommended test runner plugins:
- pytest-cov - prints coverage report at the end of test runner report.
- pytest-mock - adds
mockerfixture, which makes mocks easier and more readable. - pytest-socket - disables socket calls during tests to ensure network calls are prevented. Amazing to protect yourself against incidental DB or API calls.
- pytest-sugar - makes test runner report even nicer.
Useful content: