前言:今天把testlink里面的测试用例导出出来,但是格式是xml文件,网上看到的转换工具都是需要破解的。打开看看里面数据挺有规律的,于是自己动手写了个脚本。
思路:读取xml节点数据写入到excel表格。
准备:需要xml和xlwt的库,python版本2.7
废话不多说直接上代码
import xml.dom.minidom
import xlwt
file=xlwt.Workbook(encoding='ascii')
table=file.add_sheet('test',cell_overwrite_ok=True)
dom = xml.dom.minidom.parse('2.xml')
root=dom.documentElement
itemlist = root.getElementsByTagName('testcase')
plist = root.getElementsByTagName('preconditions')
actions = root.getElementsByTagName('actions')
exs = root.getElementsByTagName('expectedresults')
item=itemlist[0]
un=item.getAttribute("name")
print un
for i in range(0,len(itemlist)):
item=itemlist[i]
pp=plist[i]
un=item.getAttribute("name")
table.write(i,0,un)
try:
action=actions[i]
ex=exs[i]
except IndexError,e:
continue
if pp.firstChild==None:
continue
else:
table.write(i,1,pp.firstChild.data)
table.write(i,2,action.firstChild.data)
table.write(i,3,ex.firstChild.data)
file.save('mytest.xls')
print "over"
6.17 今天把程序功能升级了一下。可以把当前目录下所有的xml文件一起转换,并替换excel表格里的<p></p><br/>标签
上代码
#coding=utf-8
import xml.dom.minidom
import xlwt
#在这里设置当前目录下的xml文件个数并把文件名命名为1.xml,2.xml以此类推
for j in range(0,5):
filename=str(j)+".xml"
savename=str(j)+".xls"
file=xlwt.Workbook(encoding='ascii')
table=file.add_sheet('test',cell_overwrite_ok=True)
dom = xml.dom.minidom.parse(filename)
root=dom.documentElement
itemlist = root.getElementsByTagName('testcase')
plist = root.getElementsByTagName('preconditions')
actions = root.getElementsByTagName('actions')
exs = root.getElementsByTagName('expectedresults')
item=itemlist[0]
un=item.getAttribute("name")
print u"开始转换%s文件"%filename
for i in range(0,len(itemlist)):
item=itemlist[i]
pp=plist[i]
un=item.getAttribute("name")
table.write(i,0,un)
action=actions[i]
ex=exs[i]
if pp.firstChild==None:
continue
else:
mydata=pp.firstChild.data.replace('<p>','').replace('</p>','').replace('<br />','').replace('<br/>','')
table.write(i,1,mydata)
try:
mydata1=action.firstChild.data.replace('<p>','').replace('</p>','').replace('<br />','').replace('<br/>','')
table.write(i,2,mydata1)
except AttributeError,e:
pass
try:
mydata2=ex.firstChild.data.replace('<p>','').replace('</p>','').replace('<br />','').replace('<br/>','')
table.write(i,3,mydata2)
except AttributeError,e:
pass
file.save(savename)
print u"所有文件转换完成"