开发者社区> 问答> 正文

如何模拟with语句中使用的打开(使用Python中的Mock框架)?

如何使用模拟测试以下代码(使用模拟,Michael Foord的Mock框架提供的补丁装饰器和哨兵):

def testme(filepath):
    with open(filepath, 'r') as f:
        return f.read()

展开
收起
祖安文状元 2020-02-21 17:33:27 552 0
1 条回答
写回答
取消 提交回答
  • 模拟0.7.0中更改了此方法,该模拟最终支持模拟python协议方法(魔术方法),尤其是使用MagicMock:

    http://www.voidspace.org.uk/python/mock/magicmock.html

    作为上下文管理器打开模拟的示例(来自模拟文档中的示例页面):

    >>> open_name = '%s.open' % __name__
    >>> with patch(open_name, create=True) as mock_open:
    ...     mock_open.return_value = MagicMock(spec=file)
    ...
    ...     with open('/some/path', 'w') as f:
    ...         f.write('something')
    ...
    <mock.Mock object at 0x...>
    >>> file_handle = mock_open.return_value.__enter__.return_value
    >>> file_handle.write.assert_called_with('something')
    
    2020-02-21 17:33:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载