我正在編寫一個方法,該方法使用 lxml.etree 中 ElementTree 類的 write 方法。在編寫我的測試時,我想模擬一下,這樣單元測試就不會向我的驅動器寫一堆東西。我文件中的代碼看起來像這樣 # 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'
需要從 lxml.etree 模塊模擬 ElementTree 類的 write() 方法
慕婉清6462132
2021-10-10 16:31:27