Я пишу метод, который использует метод write из класса ElementTree из lxml.etree. Когда я пишу свои тесты, я хочу поиграть с этим, чтобы модульные тесты не записывали кучу вещей на мой диск.
Код в моем файле выглядит примерно так
# myapp\gla.py
from lxml.etree import Element, ElementTree
def my_func(element):
root = Element(element)
xml = ElementTree(root)
xml.write('path_to_file')
Тестирование выглядит так:
# tests\test_gla.py
from unittest import patch
from myapp.gla import my_func
@patch('myapp.gla.ElementTree.write')
def test_my_func(self, mock_write):
my_func('rootElement')
mock_write.assert_called_once()
Я понял
Traceback (most recent call last):
File "C:\Anaconda2\envs\py36\lib\unittest\mock.py", line 1171, in patched
arg = patching.__enter__()
File "C:\Anaconda2\envs\py36\lib\unittest\mock.py", line 1243, in __enter__
original, local = self.get_original()
File "C:\Anaconda2\envs\py36\lib\unittest\mock.py", line 1217, in get_original
"%s does not have the attribute %r" % (target, name)
AttributeError: <cyfunction ElementTree at 0x000001FFB4430BC8> does not have the attribute 'write'