Unit tests are an important part of writing reliable and efficient code. Why does unit testing evoke such strong differences of opinion among developers?Some developers feel the same about unit testing as they do about household chores. Others eagerly write tests and are not content until their code has reasonable coverage. Developers often take a lazy approach and write full stack integration tests that are fragile and have long run times. Concepts like mocks, stubs, test doubles, isolation, units, integration, statement coverage, branch coverage, documentation, and regression are important to understand and properly apply. These topics will be covered in the context of a Python program that illustrates all of these concepts.