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个小时,总之是一项无技术耗时耗神的手工活. 于是.想写个程序来统计 ...
随机推荐
- 打造自己的 JavaScript 武器库(转自SegmentFault公众号)
2017-11-14 SlaneYang SegmentFault 自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班,就要想办法提高工作效率.这里提一个小点 ...
- [国嵌攻略][182][Sqlite嵌入式数据库移植]
数据库系统构成 在计算机系统中,保存数据的方式一般有两种: 1.普通文件方式 2.数据库方式 相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性. 数据库系统一般由三个部分构成 1. ...
- [国嵌攻略][091][TCP网络程序设计]
server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #inc ...
- YUI 和路径相关的参数与module加载之间的关系
相关参数默认值 使用YUI, 我们可以配置一些和路径相关参数,如base.root.comboBase.cdn, combine.path.fullpath等属性的配置均会影响到YUI的module加 ...
- 2017-6-14 踩坑小结(Android文件读写 相关问题)
填坑 getSlotFromBufferLocked: unknown buffer: 0xab7115e0 1. 在棉花糖(6.0)上莫名出现 未知缓冲 错误,百度了一下,貌似这个是Android6 ...
- dede表前缀不定时,查询表#@__archives
$query = "SELECT arc.*,tp.typedir,tp.typename, tp.isdefault,tp.defaultname,tp.nam ...
- 在js中怎样获得checkbox里选中的多个值?
https://zhidao.baidu.com/question/203897221.html 思路:利用name属性值获取checkbox对象,然后循环判断checked属性(true表示被选中, ...
- mysql 查询今天,昨天,上个月sql语句 注解
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ...
- C# winform页面可视化设计打开失败,提示未能加载程序集或他的一个依赖项,dll错误
这种情况发生在最初项目是x86属性,改成x64后,一些原来dll,页面没有及时更新,导致页面找不到dll, 最简单的解决方式,把项目属性改成AnyCpu,重新编译下,就可以打开可视化设计窗口了.
- Linux指令--性能监控和优化命令相关指令
原文出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html.感谢作者无私分享 性能监控和优化命令相关指令有:top,free,v ...