Mocker имеет функцию исправления, которую он говорит, позволяет заменить класс, чтобы все экземпляры этого класса были исправлены до вашего макета.Как издеваться над классом из сторонней библиотеки с помощью 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'
Может кто-нибудь пролить свет на что я делаю неправильно?
Спасибо за совет, но когда я пытаюсь что я получаю 'TypeError: не может установить атрибуты встроенных -in/extension type 'instance'' вместо этого, может быть, есть проблема с моей установкой mocker? – Ctrlspc
Ну, это может быть так, но я подозреваю, что вы пытаетесь использовать Mocker неправильно. Извините, я не знаю. – bpgergo