2

在python2中,我的测试方法中有这个:

mock_file = MagicMock(spec=file)

我正在迁移到 python3,但我不知道如何进行类似的模拟。我试过了:

from io import IOBase
mock_file = MagicMock(spec=IOBase)

mock_file = create_autospec(IOBase)

我错过了什么?

4

1 回答 1

4

IOBase不实现关键文件方法,例如readandwrite因此通常不适合作为创建模拟文件对象的规范。根据您是要模拟原始流、二进制文件还是文本文件,您可以使用RawIOBase,BufferedIOBaseTextIOBase作为规范来代替:

from io import BufferedIOBase
mock_file = MagicMock(spec=BufferedIOBase)
于 2019-04-11T18:42:11.180 回答