I added a link to Jester, a mutation testing tool. It makes changes to your source code, then runs your test suite on the result. If all the tests pass, you missed a test case. Jester works on Java code, but a sidecar tool called Pester provides the same service for Python. It's a fascinating idea, but I've never had the fortitude to try it out (it needs Java and Python, and modified versions of unit test frameworks in both languages).
BTW, my adding that link to that wiki page proves that I don't always have to control the data.