Things that cause trouble
Coverage.py works well, and I want it to properly measure any Python program, but there are some situations it can’t cope with. This page details some known problems, with possible courses of action, and links to coverage.py bug reports with more information.
I would love to hear from you if you have information about any of these problems, even just to explain to me why you want them to start working properly.
If your problem isn’t discussed here, you can of course search the coverage.py bug tracker directly to see if there is some mention of it.
Things that don’t work
There are a number of popular modules, packages, and libraries that prevent coverage.py from working properly:
execv, or one of its variants. These end the current program and replace it with a new one. This doesn’t save the collected coverage data, so your program that calls execv will not be fully measured. A patch for coverage.py is in issue 43.
thread, in the Python standard library, is the low-level threading interface. Threads created with this module will not be traced. Use the higher-level threading module instead.
sys.settrace is the Python feature that coverage.py uses to see what’s happening in your program. If another part of your program is using sys.settrace, then it will conflict with coverage.py, and it won’t be measured properly.
sys.setprofile calls your code, but while running your code, does not fire trace events. This means that coverage.py can’t see what’s happening in that code.
Still having trouble?
If your problem isn’t mentioned here, and isn’t already reported in the coverage.py bug tracker, please get in touch with me, we’ll figure out a solution.