Testing Types ============= Three types of tests: - Unit - Integration - Functional Unit Tests ---------- Unit tests are tests which test a *unit* of code. In Python, the unit is almost alwas a method or a function. Python's standard module for performing unit testing is ``unittest``. Integration Tests ----------------- Integration tests are tests which verify that two parts of a system are collaborating as expected. Python's standard module for performing unit testing is *also* (confusingly) ``unittest``. Functional Tests ---------------- Functional tests are end-to-end tests of a complete application. Also known as "system tests". Python does not really have a standard library for doing functional tests. I tend to use ``unittest``. When Do I Write Which Ones? --------------------------- - Ideally, you at two of the three: unit and functional. - Reasonable people can disagree on the importance of their proportions to each other within the test base of an application. - I tend to write mostly unit tests. I write almost no integration tests. I write a few functional tests to make sure everything is working right and that I haven't mocked myself into placation.