import unittest
import os
+TEST_XMLFILE = findfile(os.path.join("xmltestdata", "test.xml"))
+TEST_XMLFILE_OUT = findfile(os.path.join("xmltestdata", "test.xml.out"))
+
ns_uri = "http://www.python.org/xml-ns/saxtest/"
class XmlTestBase(unittest.TestCase):
#
# ===========================================================================
-xml_test_out = open(findfile("test"+os.extsep+"xml"+os.extsep+"out")).read()
+xml_test_out = open(TEST_XMLFILE_OUT).read()
class ExpatReaderTest(XmlTestBase):
xmlgen = XMLGenerator(result)
parser.setContentHandler(xmlgen)
- parser.parse(open(findfile("test"+os.extsep+"xml")))
+ parser.parse(open(TEST_XMLFILE))
self.assertEquals(result.getvalue(), xml_test_out)
xmlgen = XMLGenerator(result)
parser.setContentHandler(xmlgen)
- parser.parse(findfile("test"+os.extsep+"xml"))
+ parser.parse(TEST_XMLFILE)
self.assertEquals(result.getvalue(), xml_test_out)
xmlgen = XMLGenerator(result)
parser.setContentHandler(xmlgen)
- parser.parse(InputSource(findfile("test"+os.extsep+"xml")))
+ parser.parse(InputSource(TEST_XMLFILE))
self.assertEquals(result.getvalue(), xml_test_out)
parser.setContentHandler(xmlgen)
inpsrc = InputSource()
- inpsrc.setByteStream(open(findfile("test"+os.extsep+"xml")))
+ inpsrc.setByteStream(open(TEST_XMLFILE))
parser.parse(inpsrc)
self.assertEquals(result.getvalue(), xml_test_out)
xmlgen = XMLGenerator(result)
parser = create_parser()
parser.setContentHandler(xmlgen)
- parser.parse(findfile("test.xml"))
+ parser.parse(TEST_XMLFILE)
- self.assertEquals(parser.getSystemId(), findfile("test.xml"))
+ self.assertEquals(parser.getSystemId(), TEST_XMLFILE)
self.assertEquals(parser.getPublicId(), None)
from xml.etree import ElementTree as ET
+SIMPLE_XMLFILE = "xmltestdata/simple.xml"
+SIMPLE_NS_XMLFILE = "xmltestdata/simple-ns.xml"
+
SAMPLE_XML = """\
<body>
<tag class='a'>text</tag>
>>> tree.find("section/tag").tag
'tag'
- >>> tree = ET.ElementTree(file="samples/simple.xml")
+ >>> tree = ET.ElementTree(file=SIMPLE_XMLFILE)
>>> tree.find("element").tag
'element'
>>> tree.find("element/../empty-element").tag
"""
Test parsing from file.
- >>> tree = ET.parse("samples/simple.xml")
+ >>> tree = ET.parse(SIMPLE_XMLFILE)
>>> normalize_crlf(tree)
>>> tree.write(sys.stdout)
<root>
<element>text</element>tail
<empty-element />
</root>
- >>> tree = ET.parse("samples/simple-ns.xml")
+ >>> tree = ET.parse(SIMPLE_NS_XMLFILE)
>>> normalize_crlf(tree)
>>> tree.write(sys.stdout)
<ns0:root xmlns:ns0="namespace">
>>> parser = ET.XMLParser()
>>> parser.version # XXX: Upgrade to 2.0.1?
'Expat 2.0.0'
- >>> parser.feed(open("samples/simple.xml").read())
+ >>> parser.feed(open(SIMPLE_XMLFILE).read())
>>> print serialize(parser.close())
<root>
<element key="value">text</element>
</root>
>>> parser = ET.XMLTreeBuilder() # 1.2 compatibility
- >>> parser.feed(open("samples/simple.xml").read())
+ >>> parser.feed(open(SIMPLE_XMLFILE).read())
>>> print serialize(parser.close())
<root>
<element key="value">text</element>
>>> target = ET.TreeBuilder()
>>> parser = ET.XMLParser(target=target)
- >>> parser.feed(open("samples/simple.xml").read())
+ >>> parser.feed(open(SIMPLE_XMLFILE).read())
>>> print serialize(parser.close())
<root>
<element key="value">text</element>
>>> iterparse = ET.iterparse
- >>> context = iterparse("samples/simple.xml")
+ >>> context = iterparse(SIMPLE_XMLFILE)
>>> action, elem = next(context)
>>> print action, elem.tag
end element
>>> context.root.tag
'root'
- >>> context = iterparse("samples/simple-ns.xml")
+ >>> context = iterparse(SIMPLE_NS_XMLFILE)
>>> for action, elem in context:
... print action, elem.tag
end {namespace}element
end {namespace}root
>>> events = ()
- >>> context = iterparse("samples/simple.xml", events)
+ >>> context = iterparse(SIMPLE_XMLFILE, events)
>>> for action, elem in context:
... print action, elem.tag
>>> events = ()
- >>> context = iterparse("samples/simple.xml", events=events)
+ >>> context = iterparse(SIMPLE_XMLFILE, events=events)
>>> for action, elem in context:
... print action, elem.tag
>>> events = ("start", "end")
- >>> context = iterparse("samples/simple.xml", events)
+ >>> context = iterparse(SIMPLE_XMLFILE, events)
>>> for action, elem in context:
... print action, elem.tag
start root
end root
>>> events = ("start", "end", "start-ns", "end-ns")
- >>> context = iterparse("samples/simple-ns.xml", events)
+ >>> context = iterparse(SIMPLE_NS_XMLFILE, events)
>>> for action, elem in context:
... if action in ("start", "end"):
... print action, elem.tag
end-ns None
>>> events = ("start", "end", "bogus")
- >>> context = iterparse("samples/simple.xml", events)
+ >>> context = iterparse(SIMPLE_XMLFILE, events)
Traceback (most recent call last):
ValueError: unknown event 'bogus'
... pass
>>> builder = Builder()
>>> parser = ET.XMLParser(target=builder)
- >>> parser.feed(open("samples/simple.xml", "r").read())
+ >>> parser.feed(open(SIMPLE_XMLFILE, "r").read())
start root
start element
end element
... print "comment", repr(data)
>>> builder = Builder()
>>> parser = ET.XMLParser(target=builder)
- >>> parser.feed(open("samples/simple-ns.xml", "r").read())
+ >>> parser.feed(open(SIMPLE_NS_XMLFILE, "r").read())
pi pi 'data'
comment ' comment '
start {namespace}root
"""
Test Element.getchildren()
- >>> tree = ET.parse(open("samples/simple.xml", "r"))
+ >>> tree = ET.parse(open(SIMPLE_XMLFILE, "r"))
>>> for elem in tree.getroot().iter():
... summarize_list(elem.getchildren())
['element', 'element', 'empty-element']
<?xml version='1.0'?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
<p>Example.</p>
- <xi:include href="samples/simple.xml"/>
+ <xi:include href="{}"/>
</document>
-"""
+""".format(SIMPLE_XMLFILE)
def xinclude_loader(href, parse="xml", encoding=None):
try:
from test import test_xml_etree
def ignore(message, category=DeprecationWarning):
warnings.filterwarnings("ignore", message, category)
+
# The same doctests are used for both the Python and the C implementations
assert test_xml_etree.ET.__name__ == module_name
+
with warnings.catch_warnings(), CleanContext():
# Search behaviour is broken if search path starts with "/".
ignore("This search is broken in 1.3 and earlier, and will be fixed "
test_support.run_doctest(test_xml_etree, verbosity=True)
- # The module should not be changed by the tests
- assert test_xml_etree.ET.__name__ == module_name
+ # The module should not be changed by the tests
+ assert test_xml_etree.ET.__name__ == module_name
if __name__ == '__main__':
test_main()