如何在python3中模拟文件对象

时间:2019-04-11 18:28:12

标签: python python-3.x python-2.7 mocking magicmock

在python2中,我的测试方法中包含以下内容:

lapply(seq_along(my.list), 
       function(x) cbind(my.list[[x]], unique.id=x))
[[1]]
  y1 y2 unique.id
1  1  4         1
2  2  5         1
3  3  6         1

[[2]]
  y1 y2 unique.id
1  3  6         2
2  2  5         2
3  1  4         2

我正在使用python3,但我不知道如何进行类似的模拟。我尝试过:

mock_file = MagicMock(spec=file)

我想念什么?

1 个答案:

答案 0 :(得分:2)

IOBase没有实现诸如readwrite之类的关键文件方法,因此通常不适合用作创建模拟文件对象的规范。根据您是要模拟原始流,二进制文件还是文本文件,可以使用RawIOBaseBufferedIOBaseTextIOBase作为规范:

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