解析XML然后修改输出

问题描述:

我制作了一个python脚本,用于解析测试结果的xml输出,然后打印测试套件名称,测试用例以及通过和失败。下面是一个例子:百分比告诉你套件中测试用例的通过百分比。数字65和85是运行时间。如果测试失败,我必须重新运行该特定测试,然后再创建一个新的XML文件。我期望做的是通过解析所有XML来收集所有结果。如果一次测试失败10次。那么它将在它的所有运行时间内打印它。解析XML然后修改输出

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个测试用例,然后指定每个测试用例通过或失败的次数。目前我输出所有的结果在一个日志文件,我用正则表达式解析出这些细节,但我卡住了,不知道该怎么办。

编辑::

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

+0

是上次TestSuite的50%正确吗? – 2014-10-19 06:34:07

+1

请添加一些有问题的代码,而不仅仅是结果。 – TarasB 2014-10-19 06:35:41

我会在这里做的是用词典,列表和元组所以你最终看起来像一个结构如下:

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

将成果转化为在此之后,你会遍历测试套件字典和测试用例字典,根据需要对列表内容进行求和后打印结果。

我在平板电脑上,否则我会为如何创建/操作此代码片段写一段代码,但我希望这个例子可以转动一些*。