Chapter 15. Designing for Testability
High-quality programs have automated tests. We need to use everything at our disposal to be sure that our software works. The golden rule is this: to be deliverable, the feature must have a unit test.
Without an automated unit test, the feature cannot be trusted to work and should not be used. According to Kent Beck, in Extreme Programming Explained:
"Any program feature without an automated test simply doesn't exist."
There are two essential points regarding the automated testing of program features:
Automated: This means that there's no human judgment involved. The testing involves a script that compares actual responses to expected responses.
Features: These are tested in isolation to be sure that they work separately. This is unit testing, where each "unit" has enough software to implement a given feature. Ideally, it's a small unit such as a class. However, it can also be a larger unit such as a module or package.
Python has two built-in testing frameworks...