[TIP] problems w/ coverage and threads?
Ned Batchelder
ned at nedbatchelder.com
Wed Aug 25 05:21:27 PDT 2010
Thanks, but I just did:
http://bitbucket.org/ned/coveragepy/issue/85/threadrun-isnt-measured
--Ned.
On 8/25/2010 12:36 AM, Dirk Pranke wrote:
> Hi Ned,
>
> Thanks for the response. I've verified that if I pull the code into a
> function called by run(), it works for me as well, which gives me a
> pretty good workaround in the meantime.
>
> Would it be helpful for me to file this as a bug?
>
> -- Dirk
>
> On Tue, Aug 24, 2010 at 7:43 PM, Ned Batchelder<ned at nedbatchelder.com> wrote:
>> 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