what would be the best strategy to compare following test reports (xmls):
test report one:
-<testReport>
-<Configuration>
<TestProjectFile>D:\setting.config</TestProjectFile>
</Configuration>
-<Cases>
-<Case>
<Type>typeOne</Type>
<ProjectName>Project1</ProjectName>
<CaseName>Case1</CaseName>
-</Case>
-<Case>
<Type>typeOne</Type>
<ProjectName>Project1</ProjectName>
<CaseName>Case2</CaseName>
-</Case>
-</Cases>
</testReport>
test report two:
-<testReport>
-<Configuration>
<TestProjectFile>D:\setting.config</TestProjectFile>
</Configuration>
-<Cases>
-<Case>
<Type>typeOne</Type>
<ProjectName>Project1</ProjectName>
<CaseName>Case1</CaseName>
-</Case>
-<Case>
<Type>typeOne</Type>
<ProjectName>Project1</ProjectName>
<CaseName>Case3</CaseName>
-</Case>
-</Cases>
</testReport>
I would like to compare two reports by CaseName and add Case(s) which are not in common between two report inside Out.xml file.
Since I am a newbie in python, I tried following code, but this is only gets the test which are in report1 but not in report2.
def compare( res1, res2, out ):
tree1 = ET.parse(res1)
root1 = tree1.getroot()
tree2 = ET.parse(res2)
root2 = tree2.getroot()
number = 0
for child in root1:
if child.tag == 'Cases':
for Cases in child.findall('Case'):
cname = Cases.find('CaseName')
for child2 in root2:
if child2.tag == 'Cases':
for Cases2 in child2.findall('Case'):
cname2 = Cases2.find('CaseName')
if cname.text == cname2.text:
child.remove(Cases)
tree1.write(out)
compare('report1.xml', 'report2.xml', 'out.xml')