Doctest: The Easiest Testing Tool
Time for action – creating and running your first doctest
Time for action – writing a more complex test
Time for action – expecting an exception
Time for action – using ellipsis in tests
Time for action – normalizing whitespace
Time for action – skipping tests
Embedding doctests in Python docstrings
Time for action – embedding a doctest in a docstring
Putting it in practice: an AVL tree
What is Unit testing and what it is not?
Time for action – identifying units
Unit testing throughout the development process
Time for action – unit testing during design
Time for action – unit testing during development
Time for action – unit testing during feedback
Time for action – unit testing during development... again
Time for action – unit testing during maintenance
Time for action – unit testing during reuse
Breaking Tight Coupling by using Mock Objects
Time for action – installing Python Mocker
Time for action – exploring the basics of Mocker
Time for action – passing a mock object as self
When Doctest isn't Enough: Unittest to the Rescue
Time for action – testing PID with unittest
Time for action – testing database-backed units
Integrating with Python Mocker
Running Your Tests: Follow Your Nose
Time for action – organizing tests from previous chapters
Time for action – creating a fixture for a doctest
Time for action – creating a module fixture
Time for action – creating a package fixture
Time for action – using Nose-specific tests
Developing a Test-Driven Project
Time for action – what are you going to do?
Time for action – nailing down the specification with unit tests
Using the tests to get the code right
Time for action – writing and debugging code
Testing Web Application Frontends using Twill
Time for action – browsing the web with Twill
Time for action – Twill scripting
Calling Twill scripts from tests
Time for action – running Twill script files
Time for action – running Twill script strings
Integrating Twill operations into unittest tests
Time for action – using Twill's browser object
Integration Testing and System Testing
Integration tests and system tests
Time for action – figuring out the order of integration
Automation with doctest, unittest, and Nose
Time for action – writing integration tests for the time planner
Other Testing Tools and Techniques
Time for action – using coverage.py
Time for action – installing Nose as a Bazaar post-commit hook
Time for action – installing Nose as a Mercurial post-commit hook
Time for action – installing Nose as a Git post-commit hook
Time for action – installing Nose as a Darcs post-record hook
Time for action – installing Nose as a Subversion post-commit hook
Automated continuous integration