Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python中的Mock os.remove和unittest.Mock_Python 3.x_Unit Testing_Mocking_Pytest - Fatal编程技术网

Python 3.x Python中的Mock os.remove和unittest.Mock

Python 3.x Python中的Mock os.remove和unittest.Mock,python-3.x,unit-testing,mocking,pytest,Python 3.x,Unit Testing,Mocking,Pytest,如何使用unittest.mock模拟os.remove 我的尝试(使用pytest) 给出了错误 表示删除未被模拟。您有两种可能性:要么模拟模块os并从模块中使用remove(test\u remove1),要么从os import remove中执行,并在您自己的模块中模拟副本(test\u remove2): 测试\u删除.py import os from os import remove from mock import patch def test_remove1(): w

如何使用
unittest.mock
模拟
os.remove

我的尝试(使用
pytest

给出了错误


表示删除未被模拟。

您有两种可能性:要么模拟模块
os
并从模块中使用
remove
test\u remove1
),要么从os import remove中执行
,并在您自己的模块中模拟副本(
test\u remove2
):

测试\u删除.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')

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

看起来像是从os import remove导入
。在这种情况下,您必须在当前模块中模拟
删除
(请参阅)。如果您
导入操作系统
并使用
操作系统,它应该可以工作。请删除
    remove('foo') E           FileNotFoundError: [Errno 2] No such file or directory: 'foo'
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')