单元测试-在python中打开mock文件



我正在尝试模拟文件打开,所有的例子都表明我需要

@patch('open', create=True) 

但我一直收到

Need a valid target to patch. You supplied: 'open'

我知道补丁需要open全点路径,但我不知道它是什么。事实上,我甚至不确定这是问题所在。

您需要包含一个模块名称;如果在脚本中进行测试,则模块的名称为__main__:

@patch('__main__.open')

否则,请使用包含正在测试的代码的模块的名称:

@patch('module_under_test.open')

使得任何使用内置CCD_ 3的代码都将找到修补的全局代码。

请注意,mock模块附带了一个mock_open()实用程序,它可以让您使用文件数据构建一个合适的open()调用:

@patch('__main__.open', mock_open(read_data='foonbarnbazn'))

在Python 3中,您应该使用装饰器

@mock.patch("builtins.open", create=True)

或作为上下文管理器

with mock.patch('builtins.open', mock.mock_open(read_data=some_data)) as m:
    ...

相关内容

  • 没有找到相关文章

最新更新