【发布时间】:2012-01-20 16:28:49
【问题描述】:
Mocker 有一个补丁功能,它说允许你替换一个类,这样这个类的所有实例都将被修补到你的模拟中。
我正在尝试对使用 pysnmp 的函数进行一些测试,并且我正在尝试模拟使用该库的调用。
在我的代码中,我这样做:
from pysnmp.entity.rfc3413.oneliner import cmdgen
commandGen = cmdgen.CommandGenerator()
... code that uses commandGen
在我的测试中我尝试过:
from mocker import Mocker
mocker = Mocker()
commandGenMock = mocker.patch(cmdgen.CommandGenerator)
commandGenMock.doSomething()
mocker.replay()
我得到以下信息:
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
mocker.replay()
File "build\bdist.win32\egg\mocker.py", line 578, in replay
event.replay()
File "build\bdist.win32\egg\mocker.py", line 1757, in replay
task.replay()
File "build\bdist.win32\egg\mocker.py", line 2197, in replay
self.is_monitoring))
File "build\bdist.win32\egg\mocker.py", line 2157, in patch_attr
setattr(obj, attr, value)
TypeError: can't set attributes of built-in/extension type 'classobj'
谁能解释我做错了什么?
【问题讨论】:
标签: python unit-testing mocking