Python 解析XML,然后修改输出

Python 解析XML,然后修改输出,python,regex,Python,Regex,我制作了一个python脚本,通过测试结果的xml输出进行解析,然后打印testsuite名称、其中的测试用例以及通过和失败。下面是一个例子:百分比告诉您套件中测试用例的通过百分比。数字65和85是运行时。如果某个测试失败,我必须重新运行该特定测试,从而生成一个新的XML文件。我希望通过解析所有XML来收集所有结果。如果测试失败10次。然后,它将在它旁边打印它的所有运行时 测试套件0% TestCase165失败 TestCase286失败 当前输出如下所示 测试套件0% TestCase165

我制作了一个python脚本,通过测试结果的xml输出进行解析,然后打印testsuite名称、其中的测试用例以及通过和失败。下面是一个例子:百分比告诉您套件中测试用例的通过百分比。数字65和85是运行时。如果某个测试失败,我必须重新运行该特定测试,从而生成一个新的XML文件。我希望通过解析所有XML来收集所有结果。如果测试失败10次。然后,它将在它旁边打印它的所有运行时

测试套件0%

TestCase165失败

TestCase286失败

当前输出如下所示

测试套件0%

TestCase165失败

TestCase286失败

测试套件1 50%

测试用例5 43失败

测试用例6 78通过

测试套件50%

TestCase165失败

测试用例287失败

请注意,“TestSuite”是如何重复的,其重复次数是2个XML中的两倍。理想情况下,我希望脚本打印1个Testsuite,然后指定每个测试用例通过或失败的次数,而不是一次又一次地打印所有相同的测试用例。目前,我将所有结果输出到一个日志文件中,我正在使用regex解析这些细节,但我被卡住了,不知道该怎么办

编辑::

import  re
import collections

testsuites=[]
theFile=open('output.log','r')
FILE=theFile.readlines()
testname=[]
Entire_line=[]
for line in FILE:
   searchObj=re.search('^[A-Z].*$',line)
   searchObj_1=re.search('^([a-z].*) (.*?) (.*)',line)
   searchObj_2=re.search('^[a-z].*',line)
   if searchObj:
      testsuites.append(searchObj.group())
    if searchObj_1:
      testname.append(searchObj_1.group(1))
    if searchObj_2:
      Entire_line.append(searchObj_2.group())
      print searchObj_2.group()

Entire_line=sorted(Entire_line)
print testname

print Entire_line
整行基本上按顺序打印整个测试用例,并对它们进行排序,但不计算它们,我只是被困在那里。。整行输出:

testcase1 45 FAIL
testcase1 54 PASS
testcase2 66 FAIL
testcase2 77 PASS
testcase3 88 PASS
testcase4 34 PASS

我想知道的是testcase1有一次失败,但第二次通过了。它跑了两次。希望这能澄清问题。

我在这里要做的是使用字典、列表和元组,这样您就可以得到如下结构:

{
    "TestSuite": 
        {
            "Testcase1": [(65, False), (65, False)],
            "Testcase2": [(86, False), (87, False)],
        },
    "TestSuite1":
        {
            "Testcase5": [(43, False)],
            "Testcase6": [(78, True)]
        }
}
在将结果插入其中之后,您将迭代测试套件字典和测试用例字典,在根据需要对列表内容求和后打印结果


我在一台平板电脑上,否则我会写一段代码来说明如何创建/操作它,但我希望这个示例能有一些进展。

上一个TestSuite的50%正确吗?请添加一些有问题的代码,而不仅仅是结果。