问题描述
我正在尝试为 python 进程编写单元测试。 我想运行该过程几秒钟,然后执行断言以确保该过程的实例变量等于预期值。
class MyProcess(multiprocessing.Process):
def run():
......
class TestMultiProcess(unittest.TestCase):
def testStuff(self):
process = MyProcess()
process.start()
time.sleep(20)
process.exit.set()
process.join()
assert(process.ivar == 42)
问题出在最后一行。 因为是进程而不是线程,所以无法直接得到ivar的值(总是等于0)。 我想知道获得该 ivar 的首选方法是什么?
1楼
如果可能,对使用multiprocessing
运行的代码进行单元测试的首选方法是直接测试单个函数。
要从另一个进程获取值,您可以发送它: mp.Pipe()
、 mp.Queue()
或者您可以使用共享值: mp.Value()
。