在Python中用untest.mock来模拟os.remove。

问题描述 投票:0回答:1

我怎么嘲讽 os.removeunittest.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 没有被模拟。

python-3.x unit-testing mocking pytest
1个回答
1
投票

你有两种可能:要么你模拟模块 os 并使用 remove 从模块(test_remove1),或者你做 from os import remove,并在自己的模块中进行模拟复制(test_remove2):

test_remove.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')

在真正的测试中,导入会发生在另一个模块中,所以第二种情况必须适应该模块的补丁。

© www.soinside.com 2019 - 2024. All rights reserved.