Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对python进程进行单元测试_Python_Multithreading_Unit Testing_Multiprocessing - Fatal编程技术网

如何对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

我正在尝试为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的首选方法是什么?

对使用
多处理运行的代码进行单元测试的首选方法是在可能的情况下直接测试单个函数


要从另一个进程获取值,您可以发送它:
mp.Pipe()
mp.Queue()
,或者您可以使用共享值:
mp.value()
,无关:您可以使用
进程。退出。等待(20)
而不是
时间。睡眠(20)