解析XML然后修改输出

时间:2014-10-19 06:24:14

标签: python regex

我创建了一个python脚本,它解析测试结果的xml输出,然后打印testuite名称,其中的测试用例以及pass和fail。下面是一个示例:百分比告诉您套件中测试用例的通过百分比。数字65和85是运行时。如果测试失败,我必须重新运行该特定测试,然后再生成一个新的XML文件。我要做的是通过解析所有XML来收集所有结果。如果测试失败10次。然后它会在它的所有运行时间旁边打印它。

  

TestSuite 0%

     

Testcase1 65 FAIL

     

Testcase2 86 FAIL

目前输出看起来像这样

  

TestSuite 0%

     
    

Testcase1 65 FAIL

         

Testcase2 86 FAIL

  
     

TestSuite1 50%

     
    

Testcase5 43 FAIL

         

Testcase6 78 PASS

  
     

TestSuite 50%

     
    

Testcase1 65 FAIL

         

Testcase2 87 FAIL

  

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

EDIT ::

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失败了一次但是第二次失败了。它跑了两次。希望这能清除空气。

1 个答案:

答案 0 :(得分:1)

我在这里要做的是使用字典,列表和元组,这样你最终得到的结构如下所示:

{
    "TestSuite": 
        {
            "Testcase1": [(65, False), (65, False)],
            "Testcase2": [(86, False), (87, False)],
        },
    "TestSuite1":
        {
            "Testcase5": [(43, False)],
            "Testcase6": [(78, True)]
        }
}

在将结果插入到此之后,您将遍历测试套件字典和测试用例字典,在根据需要对列表内容求和后打印结果。

我在平板电脑上,否则我会写一个如何创建/操纵它的片段,但我希望这个例子让一些轮子转动。