testlink用例的导出到Excel
一直在网上寻找怎么把testlink的用例导出到Excel中,以及把Excel中已经写好的用例导入到Testlink中的方法。根据现网的经验,然后修改了一下。贴出来,以飨有这方面需求的测试同仁。
Testlink版本为1.9.16,导出的用例目录最大支持两层,
导出的Excel文件以xlsx结尾,必须有Sheet1这一页。
导出的格式应该是这个样子的
| 一级目录 | 二级目录 | 用例名称 | 用例编号 | 用例概要 | 预置条件 | 操作步骤 | 预期结果 |
| 用例集1 | 用例集1-1 | 测试用例1 | 1 | 测试用例1 | 前提 |
步骤1 |
期望1 |
python文件 tcexport.py,testlink用例的导出
#coding=utf-8
from xml.etree import ElementTree
from win32com.client import Dispatch
import win32com.client
import sys,os def ChangeReturnKeyInString(str):
retStr = str.strip().replace('<p>','')
retStr = retStr.replace('</p>','\n')
return retStr class easy_excel:
def __init__(self,filename=None):
self.xlApp=win32com.client.Dispatch('Excel.Application')
if filename:
self.filename=filename
self.xlBook=self.xlApp.Workbooks.Open(self.filename)
else:
self.xlBook=self.xlApp.Workbooks.Add()
self.filename=''
def save(self,newfilename=None):
if newfilename:
self.filename=newfilename
self.xlBook.SaveAs(newfilename)
else:
self.xlBook.Save() def close(self):
self.xlBook.Close(SaveChanges=0)
def getCell(self,sheet,row,col):
sht=self.xlBook.Worksheets(sheet)
return sht.Cell(row,col).Value
def setCell(self,sheet,row,col,value):
sht=self.xlBook.Worksheets(sheet)
sht.Cells(row,col).Value=value
sht.Cells(row,col).HorizontalAlignment=3
sht.Rows(row).WrapText=True
def mergeCells(self,sheet,row1,col1,row2,col2):
sht=self.xlBook.Worksheets(sheet)
sht.Range(sht.Cells(row1,col1),sht.Cells(row2,col2)).Merge()
def setBorder(self,sheet,row,col):
sht=self.xlBook.Worksheets(sheet)
sht.Cells(row,col).Borders.LineStyle=1
def set_col_width(self,sheet):
sht=self.xlBook.Worksheets(sheet)
sht.Columns("E:H").ColumnWidth=30 if __name__ =='__main__':
if (len(sys.argv) == 1):
print("Please specified a xml file")
os.system("pause")
sys.exit(0)
else:
tmpInFile = os.getcwd()+"\\"+sys.argv[1]
inFile = tmpInFile
if not tmpInFile.endswith(".xml"):
outFile = tmpInFile + "-tcexp.xlsx"
inFile = tmpInFile + ".xml"
else:
outFile = tmpInFile[:-4] +"-tcexp.xlsx" xls=easy_excel()
xls.setCell('Sheet1',1,1,u"一级目录")
xls.setCell('Sheet1',1,2,u"二级目录")
xls.setCell('Sheet1',1,3,u"用例名称")
xls.setCell('Sheet1',1,4,u"用例编号")
xls.setCell('Sheet1',1,5,u"用例概要说明")
xls.setCell('Sheet1',1,6,u"预置条件")
xls.setCell('Sheet1',1,7,u"操作步骤")
xls.setCell('Sheet1',1,8,u"预期结果")
xls.set_col_width('Sheet1') tree=ElementTree.parse(inFile)
root = tree.getroot() row_flag=1
#一级目录
for sub1Testsuite in root.findall("testsuite"):
sub1SuiteId = sub1Testsuite.get("id")
sub1SuiteName = sub1Testsuite.get("name")
for sub1TestCase in sub1Testsuite.findall("testcase"):
row_flag = row_flag + 1
sub2SuiteName = ""
title = sub1TestCase.get("name")
externalid = sub1TestCase.find("externalid").text
summary = ChangeReturnKeyInString(sub1TestCase.find("summary").text)
preconditions = ChangeReturnKeyInString(sub1TestCase.find("preconditions").text) xls.setCell('Sheet1',row_flag,1,sub1SuiteName)
xls.setCell('Sheet1',row_flag,2,sub2SuiteName)
xls.setCell('Sheet1',row_flag,3,title)
xls.setCell('Sheet1',row_flag,4,externalid)
xls.setCell('Sheet1',row_flag,5,summary)
xls.setCell('Sheet1',row_flag,6,preconditions)
stepsNode=sub1TestCase.find("steps")
actions = ""
expectedresults = ""
for stepNode in stepsNode.findall("step"):
step_number = stepNode.find('step_number').text
actions = actions+stepNode.find('actions').text.strip()
expectedresults = expectedresults + stepNode.find('expectedresults').text.strip()
actions = ChangeReturnKeyInString(actions)
expectedresults = ChangeReturnKeyInString(expectedresults)
xls.setCell('Sheet1',row_flag,7,actions)
xls.setCell('Sheet1',row_flag,8,expectedresults) for sub2Testsuite in sub1Testsuite.findall("testsuite"):
sub2SuiteId = sub2Testsuite.get("id")
sub2SuiteName = sub2Testsuite.get("name")
for sub2TestCase in sub2Testsuite.findall("testcase"):
row_flag = row_flag + 1
title = sub2TestCase.get("name")
externalid = sub2TestCase.find("externalid").text
summary = ChangeReturnKeyInString(sub2TestCase.find("summary").text)
preconditions = ChangeReturnKeyInString(sub2TestCase.find("preconditions").text) xls.setCell('Sheet1',row_flag,1,sub1SuiteName)
xls.setCell('Sheet1',row_flag,2,sub2SuiteName)
xls.setCell('Sheet1',row_flag,3,title)
xls.setCell('Sheet1',row_flag,4,externalid)
xls.setCell('Sheet1',row_flag,5,summary)
xls.setCell('Sheet1',row_flag,6,preconditions)
actions = ""
expectedresults = ""
stepsNode=sub2TestCase.find("steps")
for stepNode in stepsNode.findall("step"):
step_number = stepNode.find('step_number').text
actions =actions + stepNode.find('actions').text
expectedresults = expectedresults + stepNode.find('expectedresults').text
actions = ChangeReturnKeyInString(actions)
expectedresults = ChangeReturnKeyInString(expectedresults)
xls.setCell('Sheet1',row_flag,7,actions)
xls.setCell('Sheet1',row_flag,8,expectedresults) for row in range(2,row_flag):
for col in range(1,9):
xls.setBorder('Sheet1',row,col)
xls.save(outFile)
xls.close() print("finished.")
sys.exit(0)
使用方法:在Excel用例文件所在的目录里,shift+鼠标右键,打开一个cmd窗口,输入如下命令:
假设py脚本在D盘
python D:\tcimport.py testproject-deep.xml
testlink用例的导出到Excel的更多相关文章
- 使用pentaho工具将数据库数据导入导出为Excel
写在前面:本篇博客讲述的是如何使用pentaho工具快速的将数据库数据导出为Excel文件,以及如何将Excel文件数据导入数据库. 补充:使用此工具并不需要任何一句代码并能快速便捷解决实际问题,此工 ...
- MySQL要导出成excel的方法
MySQL 要导出成 excel 文件很简单,执行类似这样的命令: select * from 某个表 into outfile 'd:/文件名.xls'; 上述命令你在服务器上执行,就导在 ...
- C#将dataGridView中显示的数据导出到Excel(大数据量超有用版)
开发中非常多情况下须要将dataGridView控件中显示的数据结果以Excel或者Word的形式导出来,本例就来实现这个功能. 因为从数据库中查找出某些数据列可能不是必需显示出来,在dataGrid ...
- 将Dynamics 365中的用户及其角色、角色导出到Excel中
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复240或者20161204可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- 如何将Revit明细表导出为Excel文档
Revit软件没有将明细表直接导出为Excel电子表格的功能,Revit只能将明细表导出为TXT格式,但是这种TXT文件用EXCEL处理软件打开然后另存为XLS格式即可,以Revit2013版自带的建 ...
- html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式
先上代码 <script type="text/javascript" language="javascript"> var idTmr; ...
- Json数据导出生成Excel
最近在做一个导入导出Excel的功能,导出其他类型的文件都比较熟悉,但是导入跟导出一个Excel还是稍微特殊点.根据这次的经验,写了个导出的小样例. 总体思路就是json数据的key,value跟Ex ...
- PB导出数据excel格式dw2xls
PB导出数据excel格式dw2xls 使用DW2XLS控件 语法 uf_save_dw_as_excel ( dw, filename ) 參数 dw A reference to the data ...
- java连接MongoDB查询导出为excel表格
背景 因为项目需求.每一个星期须要统计每一个公众号7天的訪问数,月底就须要统计一个月的訪问数,40多个公众号.每次手动统计都须要花费1个小时,总之是一项无技术耗时耗神的手工活. 于是.想写个程序来统计 ...
随机推荐
- 属性getter和setter
我们知道,对象属性是由名字.值和一组特性(attribute)构成的.在ECMAScript5 中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和sette ...
- javascript数据类型之Array类型
Array类型 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了.而且,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.虽然ECMAScript数组与 ...
- APP测试时常用adb命令
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机),故在其实工作可以给我们 ...
- javaIO详解、包含文件以及流操作
1.File 文件操作 java.io.File用来表示文件或者目录.只能用来表示文件或者目录的大小名称等信息,而无法完成对文件内容的CRUD. 1.1构造方法 有四种,当然基本都是根据文件的路径或者 ...
- php网站在服务器上邮件发送不了,在本地可以
标签: php邮箱 2015-11-27 13:58 879人阅读 评论(0) 收藏 举报 分类: php(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做phpmailer发送邮 ...
- Linux中rpm命令用法听语音
rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能.下面,就来向大家介绍 rpm 命令的用法. 工具/原料 CentOS 一.rpm常用参数 1 rpm ...
- LNMP一键安装包
http://www.aliweihu.com/333.html LNMP一键安装包是什么? LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat.Debian/Ub ...
- EditText之边框颜色
EditText的自带属性里没有设置边框颜色的 有俩种方式可以达到效果 一种是网上比较推崇的用图作背景,另一种则是自绘 图作背景的: 首先重新定义一个style.在values文件夹下新建一个styl ...
- Linux入门——用户组管理
Linux用户组的管理 简介 用户组用来控制操作权限,防止无关人员莫名 rm -rf 重要文件,导致文件无法恢复或者花费很大代价恢复,这不是一个系统管理员 想看到的结果,所以一般系统管理员都会给开发人 ...
- Linuxc - 操作系统内存分配
静态变量是存储在数据段的,在函数中可以共用. 全局变量也是存储在数据段的,在全局中可以共用. 指针变量本质上是地址,数组变量本质上也是地址. 数组是可靠的,不可变的地址.指针变量是不可靠的,可变的.数 ...