如何使用lxml运行俾夫厨师
import os
import unittest
from lxml import etree
from pyfakefs import fake_filesystem_unittest
class TestExample(fake_filesystem_unittest.TestCase):
def setUp(self):
self.setUpPyfakefs()
def test_lxml(self):
os.mkdir('/test')
root = etree.Element("root")
tree = etree.ElementTree(root)
tree.write('/test/file.xml')
if __name__ == "__main__":
unittest.main()在运行上面的示例时,我得到了以下错误:
Traceback (most recent call last):
File "example_test.py", line 25, in test_lxml
File "src/lxml/lxml.etree.pyx", line 2033, in lxml.etree._ElementTree.write (src/lxml/lx
ml.etree.c:63707)
File "src/lxml/serializer.pxi", line 512, in lxml.etree._tofilelike (src/lxml/lxml.etree
.c:134950)
File "src/lxml/serializer.pxi", line 571, in lxml.etree._create_output_buffer (src/lxml/
lxml.etree.c:135614)
File "src/lxml/serializer.pxi", line 560, in lxml.etree._create_output_buffer (src/lxml/
lxml.etree.c:135415)
IOError: [Errno 2] No such file or directory我在macOS 10.12.4上使用了Python2.7.13中的lxml 3.6.4和pyfakare3.1
发布于 2020-08-22 19:09:08
仅供参考:lxml不适用于pyfakefs厨师。来自文档
Python库( os和io除外)不能使用C库访问文件系统,因为它不能修补底层C库的文件访问函数
在故障排除一章中:
pyfakefs使用C库访问文件系统。没有办法使这样的模块与pyfak厨师一起工作--如果您想使用它,就必须对整个模块进行修补。在某些情况下,用Python实现的具有类似接口的库已经存在。一个例子是lxml,在大多数情况下可以用ElementTree代替它进行测试。
(@mzjn的注释中也提到了用lxml代替xml.etree.ElementTree作为测试的替代方案)。
https://stackoverflow.com/questions/43606500
复制相似问题