我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
我使用了多线程设计(没有选择),但我的大部分代码都驻留在一个单线程中,其中所有事件都通过队列进行管理。以这种方式,我的大部分代码表现得就像是单线程的,我不必担心锁、信号量等问题。
然而,我已经到了需要对我的代码进行单元测试的地步(请不要因为我一开始没有进行TDD而责备我),但我很困惑——如何在另一个线程中测试某些东西呢?
例如,假设我有以下类:
class MyClass():
def __init__(self):
self.a=0
# register event to self.on_event
def on_some_event(self, b):
self.a += b
def get(self):
return self.a
我想测试:
import unittest
from queued_thread import ThreadedQueueHandler
class TestMyClass(unittest.TestCase):
def setUp(self):
# create the queued thread and assign the queue to self.queue
def test_MyClass(self):
mc = MyClass()
self.queue.put({'event_name':'some_event', 'val':1})
self.queue.put({'event_name':'some_event', 'val':2})
self.queue.put({'event_name':'some_event', 'val':3})
self.assertEqual(mc.get(),6)
if __name__ == '__main__':
unittest.main()
MyClass.get()
对于队列线程内的任何内容都可以正常工作,但是在主线程中由测试异步调用它,因此结果可能不正确!