tkinker库将testlink导出的xml用例转换为excel
需求:
因为公司使用的是testlink,将用例从库中导出时,是excel格式,所以大家有需求将xml格式用例转换成excel格式
实现思路:
1.解析xml格式,将testcase、steps、step,用例步骤、预计结果提取出来
2. 将文件写入到excel中
3.通过tkinter库,获取文件路径与名称
4.使用pyinstaller打包成exe文件,用户可以直接使用
实现代码
# coding:utf-8
import xml.dom.minidom
from xml.dom.minidom import Document
import re
import xlwt
from tkinter import filedialog
from tkinter import *
import tkinter# 生成界面框
win = tkinter.Tk()
win.title("生成用例excel")
win.geometry("500x400+120+50")# 获取xml文件路径
def getCliPath():FilePath = filedialog.askopenfilename()xmlPath.set(FilePath)# 界面按钮布局,获取xml路径的按钮
xmlPath = tkinter.StringVar()
button = tkinter.Button(win, text="点击按钮获取xml路径", command=getCliPath)
button.pack()
button.place(x=20, y=30)
# 文件路径
extry = tkinter.Entry(win, font=('微软雅黑', 12), textvariable=xmlPath)
extry.place(x=200, y=30)# 设置k的值,后面写入是着行递增
def func():# 读取xml文件FilePath = extry.get()dom = xml.dom.minidom.parse(FilePath)xml_name = FilePath.split('/')[-1].split('.')[0]# 写入excel中workbook = xlwt.Workbook(encoding="utf-8")# 创建sheet名称booksheet = workbook.add_sheet(xml_name)# 设置excel宽度booksheet.col(0).width = 5120booksheet.col(1).width = 5120booksheet.col(2).width = 5120booksheet.col(3).width = 5120booksheet.col(4).width = 5120booksheet.col(5).width = 5120borders = xlwt.Borders()borders.left = 1borders.right = 1borders.top = 1borders.bottom = 1# 设置头部文件字体格式等title = xlwt.easyxf(u'font:name 仿宋,height 240 ,colour_index black, bold on, italic off; align: wrap on, vert centre, horiz center;pattern: pattern solid, fore_colour light_orange;')# 设置写入文件的格式style = xlwt.easyxf('align: wrap on,vert centre, horiz center')# 设置excel字段item = '用例集'Subitem = '主题'CaseTitle = '描述'Condition = '前置条件'actions = '操作步骤'data = '操作步骤'Result = '预期结果'ExternalId = 'ExternalId'booksheet.write(0, 0, item, title)booksheet.write(0, 1, Subitem, title)booksheet.write(0, 2, CaseTitle, title)booksheet.write(0, 3, Condition, title)booksheet.write(0, 4, actions, title)booksheet.write(0, 5, data, title)booksheet.write(0, 6, Result, title)booksheet.write(0, 7, ExternalId, title)testcases_tag = dom.getElementsByTagName('testcases')testcase_tag_ = testcases_tag[0].getElementsByTagName('testcase')k = 0for j in range(len(testcase_tag_)):step_tag_ = testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')print(step_tag_)for i in range(len(step_tag_)):# k的值向上递增k = k + 1# 获取用例主题testcase_tag_name = testcases_tag[0].getElementsByTagName('testcase')[j].getAttribute('name')# 写入excel中booksheet.write(k, 1, testcase_tag_name, style)# 获取操作步骤step_number = \testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[i].getElementsByTagName('step_number')[0].firstChild.data# 进行替换step_number = re.sub(r'<(p|br|/p|br/)*>', '', step_number)# 获取用例步骤step = \testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[i].getElementsByTagName('actions')[0].firstChild.datastep = re.sub(r'<(p|br|/p|br/)*>', '', step)# 将得到文件写入excel中booksheet.write(k, 4, step, style)booksheet.write(k, 0, '功能测试用例集', style)# 获取用例运行结果expectedresults = \testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[i].getElementsByTagName('expectedresults')[0].firstChild.dataexpectedresults = re.sub(r'<(p|br|/p|br/)*>', '', expectedresults)booksheet.write(k, 6, expectedresults, style)# 获取extendId值execution_type = \testcases_tag[0].getElementsByTagName('testcase')[j].getElementsByTagName('steps')[0].getElementsByTagName('step')[0].getElementsByTagName('execution_type')[0].firstChild.dataexecution_type = re.sub(r'<(p|br|/p|br/)*>', '', execution_type)# 将文件写入至excelbooksheet.write(k, 7, execution_type)# 保存至本地workbook.save('{}.xls'.format(xml_name))# 设置button按钮
button = tkinter.Button(win,text="生成用例excel",command=func
)
button.pack()
button.place(x=200, y=200)win.mainloop()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
