【发布时间】:2011-08-15 00:59:19
【问题描述】:
我是 Python 新手(我来自 Java),在 Python3.2 中使用模拟时遇到了问题。
代码如下:
import gzip
class MyClass:
_content = None
_gzipfile = gzip.GzipFile
def __init__(self, content):
self._content = content
def my_method(self):
# Code ...
gzipper = self._gzipfile(fileobj=data)
return gzipper.read()
import unittest
from mockito import *
class MyClassTest(unittest.TestCase):
def my_method_test(self):
gzipfile = mock
myclass = MyClass()
myclass._gzipfile = mock
myclass.my_method
我想对我的方法进行单元测试(我正在使用 mockito 库进行模拟)。但是当我执行测试时,我收到了这个:
TypeError: __init__() got an unexpected keyword argument 'fileobj'
在这种情况下,我不得不使用命名参数调用 GzipFile 对象。
有没有很好的方法来模拟这个 GzipFile 对象(和类似的对象)?
【问题讨论】:
-
'__init' 是错字还是实际错误?
-
不是错字,双下划线变成斜体,不知道怎么转义……所以我作弊了
-
啊,好吧,在这种情况下,我建议添加一个需要“fileobj”参数的初始化程序。
-
下划线不会触发代码块中的斜体。 (如果不确定,您可以在编辑时查看预览。)我删除了格式设置技巧,因此 init 用于应有的位置。让问题更清晰。
-
你使用mockito而不是mock有什么原因吗?
标签: python unit-testing testing python-3.x mocking