python - 如何对使用 Popen 的函数进行单元测试?

标签 python unit-testing subprocess

我正在编写一个包含大量文件操作的程序。一些操作是通过调用subprocess.Popen来完成的,例如,split -l 50000 ${filename}, gzip -d -f ${filename} ${filename }..

现在我想对程序的功能进行单元测试。但是我如何对这些函数进行单元测试?

有什么建议吗?

最佳答案

规范的方法是模拟对 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 包含在标准库中。

关于python - 如何对使用 Popen 的函数进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24399414/

相关文章:

c# - NUnit 3.0 和 Assert.Throws

python - 以指定的最大运行时间运行外部程序

python - 在 Linux 管道命令中使用子进程

python - Django 消息不会过期

java - 使用 android 客户端和 python 服务器在 DataOutputStream 和 DataInputStream 之间滞后

python - Python模块单元测试的最佳文件结构组织?

java - 同行测试 - 有什么好的引用吗?

python - 如何从 Python 执行复杂的 shell 查找命令?

python - 使用 PyUSB 从 USB 设备读取/写入时遇到问题(超时)

python - 如何在 Python 中获取操作系统的 argv[0](而不是 sys.argv[0])?