[TIP] problems w/ coverage and threads?

Ned Batchelder ned at nedbatchelder.com
Tue Aug 24 19:43:30 PDT 2010


  Hi Dirk,

Indeed I can reproduce this.  I don't understand why yet, but the run() 
method is not recorded by the trace function, but functions it calls 
are.  Odd.  I'll work more on it..

--Ned.

On 8/24/2010 2:36 PM, Dirk Pranke wrote:
> 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()
> %
>
> _______________________________________________
> testing-in-python mailing list
> testing-in-python at lists.idyll.org
> http://lists.idyll.org/listinfo/testing-in-python
>



More information about the testing-in-python mailing list