验证cElementTree或elementTree节点类型

时间:2015-12-22 12:01:05

标签: python elementtree python-unittest celementtree

我已经使用cElementTree来解析我的应用程序中的XML文件并且它工作得非常漂亮,但是,现在我想编写一些单元测试来检查我的方法的结果是否会返回预期的结果。

在我的一个测试中,我想检查树中检索到的元素是否确实是元素类型:

self.assertIsInstance(myElem, Element, 'Incorrect type for myElem')

当我执行测试时,我收到以下错误:

TypeError: isinstance() arg 2 must be a class, type or tuple of classes and types.

如果Element不是类或类型,那么什么是Element?我在文档中找不到很多关于此的细节。

1 个答案:

答案 0 :(得分:1)

我从源代码中找到了这段摘录, 文件:ElementTree.py

##
# Element factory.  This function returns an object implementing the
# standard Element interface.  The exact class or type of that object
# is implementation dependent, but it will always be compatible with
# the {@link #_ElementInterface} class in this module.
# <p>
# The element name, attribute names, and attribute values can be
# either 8-bit ASCII strings or Unicode strings.
#
# @param tag The element name.
# @param attrib An optional dictionary, containing element attributes.
# @param **extra Additional attributes, given as keyword arguments.
# @return An element instance.
# @defreturn Element

def Element(tag, attrib={}, **extra):
    attrib = attrib.copy()
    attrib.update(extra)
    return _ElementInterface(tag, attrib)

因此,Element最终是一种工厂方法。