我正在为我的应用程序编写一些单元测试(使用unittest模块),并希望编写一些可以验证我正在调用的方法返回"类文件"对象的东西.由于这不是一个简单的异地调用,我想知道确定这个的最佳做法是什么?
因此,概述:
possible_file = self.dao.get_file("anotherfile.pdf")
self.assertTrue(possible_file is file-like)
Run Code Online (Sandbox Code Playgroud)
也许我必须关心这个文件对象实现的特定接口,或者哪些方法使它像我想要支持的文件?
谢谢,
[R
对于哪些对象"足够像文件"没有"官方定义",因为类文件对象的各种用途具有这样的不同要求 - 例如,一些仅需要read
或write
方法,其他需要各种线的一些子集 -读取方法......一些需要该fileno
方法的方法,甚至不能由标准库中的模块StringIO
和cStringIO
模块提供的"非常类文件的对象"提供.这绝对是一个"灰色阴影"的问题,而不是黑白分类法!
所以,你需要确定哪些方法您需要.为了检查它们,我建议使用装饰器定义您自己的FileLikeEnoughForMe
抽象基类abstractmethod
,并使用isinstance
for class 检查对象,如果您使用的是Python 2.6或更高版本:这是推荐的习惯用语,而不是一堆hasattr
检查这将是不太可读和更复杂(当检查正确加强那些属性实际上是方法等;-).
检查返回的对象是否提供您正在寻找的接口。例如这样:
self.assert_(hasattr(possible_file, 'write'))
self.assert_(hasattr(possible_file, 'read'))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2298 次 |
最近记录: |