Summary
In this chapter, you looked at some other patterns for unit testing. You looked at how to speed up tests and how you can run specific subsets of tests. You looked at various patterns for running subset of tests, including creating your own test suites and using the load_tests
protocol. You saw how to use the nose2 attrib plugin to run a subset of tests based on test attributes and how to implement that functionality with the default unit test runner. We then examined features for skipping tests and marking tests as expected failures. You finally looked at how we could write data-driven tests.
Next, we moved on to some mocking patterns, starting with how to implement spy functionality. You also looked at the problem of validating a sequence of mock calls across multiple mocks. You then looked at the mock_open
function to help us easily mock filesystem access, and in the process you took a peek at how to work with generator functions. Finally, you looked at the problem of using mocks...