小编Gwe*_*wen的帖子

如何在test注释中使用带有patch.object()的mock_open()

我正在尝试模拟从文件读取.使用示例可以使用如下结构:

with patch('__builtin__.open', mock_open(read_data='1'), create=True) as m:
    with open('foo') as h:
        result = h.read()
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有办法使用我的testcase注释来模拟open函数.喜欢:

@patch.object(__builtin__, 'open')
def test_check_status_running(self, m_open):
Run Code Online (Sandbox Code Playgroud)

我没有找到正确的方法,因为对我来说它适用于int并且不适用于字符串:

@patch.object(__builtin__, 'open')
def test_check_status_running1(self, m_open):
    m_open = mock_open(read_data='1')
    pid = open('testfile').read().strip()
    print type(pid)                    # <class 'mock.MagicMock'>
    self.assertEqual(1, int(pid))      # Pass
    self.assertEqual('1', pid)         # Fails MismatchError: '1' != <MagicMock name='open().read()' id='39774928'>
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking

10
推荐指数
1
解决办法
8763
查看次数

标签 统计

mocking ×1

python ×1

unit-testing ×1