def test_equality_test_random_data(self): """ Check xml equality test """ for i in range(5): # Run a number of times since we're using random test data a = EtreeUtils.getRandomElementTree(max_children=5, max_depth=5, with_text=True, max_attr=3) b = copy.deepcopy(a) random.shuffle(b._children) self.assertTrue(EtreeUtils.areElementsEqual(a,b)) b.append(EtreeUtils.getRandomElementTree()) self.assertFalse(EtreeUtils.areElementsEqual(a,b))
def test_equality_test_manual_data(self): infile = open(os.path.join("UozuXml","test_xml.xml")) a = ET.XML(infile.read()) infile.close() infile = open(os.path.join("UozuXml","test_xml_shuffled.xml")) b = ET.XML(infile.read()) infile.close() self.assertTrue(EtreeUtils.areElementsEqual(a,b)) # Change an attribute then make sure the elements are not equal for node in b.iter("Bits"): node.set("asdf","asdff") self.assertFalse(EtreeUtils.areElementsEqual(a,b))
def __init__(self, tag="DefaultName", attrib={}): """ Override Element.__init__. Note that if you don't include tag, attrib and **extra things seem to break. Dunno if that's my fault """ ET.Element.__init__(self, tag, attrib) if EtreeUtils.isValidXmlTag(self.tag) == False: raise EtreeUtils.InvalidXmlError("Invalid tag: '" + tag + "'")
def test_random_etree(self): """ Make sure randomly generated tree is valid xml """ for i in range(5): # Run a number of times since we're using random test data out_tree = EtreeUtils.getRandomElementTree(max_children=5, max_depth=5, with_text=True, max_attr=3, with_tail=False) EtreeUtils.prettifyElement(out_tree) temp_file = "random_etree.xml" ofile = open(temp_file,'wb') ET.ElementTree(out_tree).write(ofile, encoding="utf-8", xml_declaration=True) ofile.close() ifile = open(temp_file) in_tree = ET.XML(ifile.read()) ifile.close() # check_file = "random_etree_parsed.xml" # ofile = open(check_file,"wb") # ET.ElementTree(in_tree).write(ofile, encoding="utf-8", xml_declaration=True) # ofile.close() self.assertTrue(EtreeUtils.areElementsEqual(out_tree,in_tree)) os.remove(temp_file)
def __str__(self): return EtreeUtils.tostring(self, pretty=True)
def test_check_invalid_xml_element(self): el = self.getTestElement("bad tag") with self.assertRaises(EtreeUtils.InvalidXmlError): EtreeUtils.raiseExceptionOnInvalidXml(el)