在您嘲笑的类上模拟函数调用

时间:2019-10-16 20:54:36

标签: python unit-testing mocking

我该如何嘲笑

    with closing(StringIO()) as screenshot_stringio:
        screenshot.save(screenshot_stringio, format="PNG")
        screenshot_as_bytes = screenshot_stringio.getvalue()

假设“屏幕截图”已被模拟。

我尝试了以下不同的排列:

    moduleiamtesting.classiamtesting.StringIO = Mock()
    moduleiamtesting.classiamtesting.StringIO.getvalue = Mock(return_value="test_bytes")

但无法使其正常工作。我的调试器中的返回值是另一个模拟

1 个答案:

答案 0 :(得分:0)

捕获StringIO的get_value的一种方法是在适当的范围内修补sys.stdout,而不是直接模拟StringIO本身。

with mock.patch('sys.stdout', new=io.StringIO('xxx')) as fakeOutput:
   self.assertEqual('xxx', fakeOutput.getvalue().strip())
   # add your real test here, as no details provided