如何对python进程进行单元测试
我正在尝试为python进程编写一个单元测试。我想运行该进程几秒钟,然后执行断言,以确保该进程的实例变量等于预期值如何对python进程进行单元测试,python,multithreading,unit-testing,multiprocessing,Python,Multithreading,Unit Testing,Multiprocessing,我正在尝试为python进程编写一个单元测试。我想运行该进程几秒钟,然后执行断言,以确保该进程的实例变量等于预期值 class MyProcess(multiprocessing.Process): def run(): ...... class TestMultiProcess(unittest.TestCase): def testStuff(self): process = MyProcess() process.start
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的首选方法是什么?对使用多处理运行的代码进行单元测试的首选方法是在可能的情况下直接测试单个函数
要从另一个进程获取值,您可以发送它:mp.Pipe()
,mp.Queue()
,或者您可以使用共享值:mp.value()
,无关:您可以使用进程。退出。等待(20)
而不是时间。睡眠(20)