我有一个函数,它接受一个打开的文件对象file
并向其写入数据,如下所示:
def Write(self, file):
file.write("Data")
现在我想测试这个函数,我认为用某种不向文件中写入数据的流来做这件事会很好。除了StringIO类之外,我找不到能完成这项工作的Python2.7类。然而,在Python2.7中,这个类需要在write函数中使用unicode字符串。(file.write(u"Data"))
所以我不能用StringIO
类测试我的Write
函数
在我的变通方法中,我创建了一个小的伪类
class MyStream(object):
S = property(lambda self: self._S)
def __init__(self):
self._S = ""
def write(self, s):
self._S += s
用它我现在可以成功地测试我的CCD_ 5功能。
我的问题:
有没有一个原生python类也能做到这一点
提前咨询任何建议
谨向Woltan 致敬
如io
的文档所示:
由于此模块主要是为Python3.x设计的,因此您必须注意,本文档中所有使用的"字节"都是指str类型(字节是其别名),所有使用"文本"的都是指unicode类型。此外,这两种类型在io API中是不可互换的。
也就是说,如果使用后端口Python3IO库,则必须使用unicode。然而,原始的StringIO
类——它考虑字节(Python 2字符串)文本并接受它们——仍然存在于Python 2.7中,只是不在后端口的io
中。相反,它有自己的模块,也称为StringIO
。