跳转到主要内容

使用lxml和unittest进行XML单元测试的库。

项目描述

任何使用XML的人,无论是用于RSS、配置文件,还是其他原因(有人说不能简单地使用XML,但……)。

所以,你的代码生成XML,一切看起来都很正常。如果你遵循最佳实践(如果你没有,我认为你应该),你已经编写了一些好的单元测试,其中你比较代码的结果与预期的结果。我的意思是,你比较的是字符串与字符串。有一天,可能会发生一些不好的事情。

XML不是一个简单的字符串,它是一个结构化文档。你不能简单地比较两个XML字符串并期望一切正常:属性顺序可能会意外改变,元素可能是可选的,而且没有人能简单解释XML格式化中空格和制表符是如何工作的。

这就是XML unittest TestCase的来源:如果你想使用内置的unittest包(或者如果你有这个需求),而且你不害怕使用lxml中的xpath表达式,这个库就是为你准备的。

你将能够测试你的XML文档,并使用xpath和各种模式语言的力量来编写有意义的测试。

如何

  • 扩展 xmlunittest.XmlTestCase

  • 使用生成XML文档的功能或方法编写您的测试

  • 使用 xmlunittest.XmlTestCase 的断言方法进行验证

  • 保持您的测试可读

示例

from xmlunittest import XmlTestCase


class CustomTestCase(XmlTestCase):

    def test_my_custom_test(self):
        # In a real case, data come from a call to your function/method.
        data = """<?xml version="1.0" encoding="UTF-8" ?>
        <root xmlns:ns="uri">
            <leaf id="1" active="on" />
            <leaf id="2" active="on" />
            <leaf id="3" active="off" />
        </root>"""

        # Everything starts with `assertXmlDocument`
        root = self.assertXmlDocument(data.encode())

        # Check namespace
        self.assertXmlNamespace(root, 'ns', 'uri')
        # Check
        self.assertXpathsUniqueValue(root, ('./leaf/@id', ))
        self.assertXpathValues(root, './leaf/@active', ('on', 'off'))

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

xmlunittest-1.0.1.tar.gz (5.9 kB 查看哈希值)

上传时间 源代码

构建分发

xmlunittest-1.0.1-py3-none-any.whl (5.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持