【发布时间】:2017-07-01 22:12:48
【问题描述】:
我有一个看起来像这样的函数:
def run_shell_command_return_output(command_array):
output = []
p = Popen(command_array, stdout=PIPE, bufsize=1)
with p.stdout:
for line in iter(p.stdout.readline, b''):
output.append(line.decode('utf8').strip())
p.wait()
return output
我正在尝试弄清楚如何对使用此方法的代码进行单元测试,以便它实际上不会命中文件系统,而是使用虚假的返回数据和状态代码。
我已经看到了有关如何通过communicate() 模拟使用popen 的代码的信息,例如How to unit test a function that uses Popen?,但我无法弄清楚如何以这种方式使用popen 模拟代码。
如何在此处伪造 popen 以便此方法可以返回伪造的输出?
【问题讨论】:
标签: python unit-testing mocking python-unittest