如何对python进程进行单元测试

时间:2014-03-24 01:55:44

标签: python multithreading unit-testing multiprocessing

我正在尝试为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)。我想知道获得那个伊娃的首选方法是什么?

1 个答案:

答案 0 :(得分:2)

单元测试使用multiprocessing运行的代码的首选方法是尽可能直接测试各个函数。

要从其他流程获取值,您可以发送它:mp.Pipe()mp.Queue()或者您可以使用共享值:mp.Value()