猿问

模拟 subprocess.Popen 与字典作为标准输出

我有一个功能


def execute(process: subprocess.Popen):

    if not isinstance(process, subprocess.Popen):

        raise ValueError('expected: subprocessPopen, found: %s' % type(process))


    data = io.TextIOWrapper(process.stdout, encoding='utf-8')

    func1(data_input)

我想对它进行单元测试,我想data将它作为参数dictionary传递给func1它,但无法找到出路。


慕桂英4014372
浏览 160回答 2
2回答

墨色风雨

查看specMock 对象的参数,以使其通过isinstance()测试:https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock查看patch装饰器,了解如何用对象替换process.stdout成员io.BytesIO:https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch您可能还需要考虑此处给出的示例:https://docs.python.org/3/library/unittest.mock.html#quick-guide

素胚勾勒不出你

import mockdef test_run_func():    subprocess.Popen = mock.MagicMock(return_value=expected_return_value)    # The rest of your test...类似的东西应该可以工作。
随时随地看视频慕课网APP

相关分类

Python
我要回答