我正在编写一个包含大量文件操作的程序。有些操作是通过调用subprocess.Popen
来完成的,例如split -l 50000 ${filename}
,gzip -d -f ${filename} ${filename}.
。
现在我想对程序的功能进行单元测试。但是我怎么能对这些功能进行单元测试呢?
有什么建议吗?
答案 0 :(得分:9)
规范的方法是模拟对Popen的调用,并用一些测试数据替换结果。看看mock
library documentation。 1
你会做这样的事情:
with mock.patch.object(subprocess, 'Popen') as mocked_popen:
mocked_popen.return_value.communicate.return_value = some_fake_result
function_which_uses_popen_communicate()
现在你可以做一些检查或者你想要测试的任何东西......
1 请注意,它在python3.3中作为unittest.mock
包含在标准库中。