首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pyfak厨师运行lxml时访问的实际文件系统

使用pyfak厨师运行lxml时访问的实际文件系统
EN

Stack Overflow用户
提问于 2017-04-25 09:19:21
回答 1查看 233关注 0票数 1

如何使用lxml运行俾夫厨师

代码语言:javascript
复制
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()

在运行上面的示例时,我得到了以下错误:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2020-08-22 19:09:08

仅供参考:lxml不适用于pyfakefs厨师。来自文档

Python库( os和io除外)不能使用C库访问文件系统,因为它不能修补底层C库的文件访问函数

在故障排除一章中:

pyfakefs使用C库访问文件系统。没有办法使这样的模块与pyfak厨师一起工作--如果您想使用它,就必须对整个模块进行修补。在某些情况下,用Python实现的具有类似接口的库已经存在。一个例子是lxml,在大多数情况下可以用ElementTree代替它进行测试。

(@mzjn的注释中也提到了用lxml代替xml.etree.ElementTree作为测试的替代方案)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43606500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档