Mocking external resources
In earlier recipes in this chapter, Testing things that involve dates or times and Testing things that involve randomness, we wrote tests for involving resources with states that we could predict and mock. In one case, we created a mock datetime
module that had a fixed response for the current time. In the other case, we created a mock random
module that returned a fixed response from the choice()
function.
In some cases, we need to mock objects that have more complex state changes. A database, for example, would require mock objects that respond to create, retrieve, update, and delete requests. Another example is the overall OS with a complex mixture of stateful devices, including the filesystem, and running processes.
In the Testing things that involve dates or times recipe, we looked briefly at how the pytest tool provides a tmpdir
fixture. This fixture creates a temporary directory for each test, allowing us to run tests without conflicting with...