使用 unittest.mock 在 Python 中模拟 os.remove

2024-03-07

我该如何嘲笑os.remove with unittest.mock?

我的尝试(使用pytest)

def test_patch_remove():
    with patch("os.remove"):
        remove('foo')

给出错误

    remove('foo') E           FileNotFoundError: [Errno 2] No such file or directory: 'foo'

表明remove没有被mock。


你有两种可能性:要么你模拟模块os并使用remove从模块(test_remove1),或者你这样做from os import remove,并在您自己的模块中模拟副本(test_remove2):

测试删除.py

import os
from os import remove
from mock import patch

def test_remove1():
    with patch('os.remove'):
        os.remove('foo')

def test_remove2():
    with patch('test_remove.remove'):
        remove('foo')

在实际测试中,导入将发生在另一个模块中,因此必须调整第二种情况以修补该模块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 unittest.mock 在 Python 中模拟 os.remove 的相关文章