[TIP] problems w/ coverage and threads?

Dirk Pranke dpranke at chromium.org
Tue Aug 24 11:36:42 PDT 2010


Hi all,

I'm running the following program under coverage on a Mac Pro running
Snow Loepard (using "coverage run threads_unittest.py", python 2.5,
coverage 3.3.1) and getting no coverage numbers from the
TestThread.run()
method. Also, if I try to mark it ignored with "# pragma: no cover",
that seems to have no effect.

I would have thought that both of these things would work. Any ideas?

-- Dirk

% cat threads_unittest.py

import Queue
import threading
import unittest

class TestThread(threading.Thread):
    def __init__(self, started_queue, stopping_queue):
        threading.Thread.__init__(self)
        self._started_queue = started_queue
        self._stopping_queue = stopping_queue

    def run(self):
        print "starting thread"
        self._started_queue.put('')
        msg = self._stopping_queue.get()
        print "exiting thread"

class ThreadTest(unittest.TestCase):
    def test_threads(self):
        starting_queue = Queue.Queue()
        stopping_queue = Queue.Queue()
        thd = TestThread(starting_queue, stopping_queue)
        stopping_queue.put('')
        thd.start()
        starting_queue.get()
        thd.join()
        self.assertTrue(True)

if __name__ == '__main__':
    unittest.main()
%



More information about the testing-in-python mailing list