TestLink学习七:TestLink测试用例Excel转换XML工具

最近在整理测试用例,所以想找一个合适的工具来完成对测试需求、测试用例的管理。对比了一翻,发现开源工具中扩展比较好的还属TestLink,而且还可以与JIRA进行对接,这样就引起了我更大的兴趣。加上之前本来就接触过此工具,只是源于各种原因没能深入去研究来着,这次也就是决心于此!于是就找来了Testlink的最新版1.9.3,将其搭建在Ubuntu Server上,很快我们就可以正常方访问了。不过说实话,Testlink界面确实很难看,不过毕竟它不是商业工具,而且可以自己去扩展并定制开发,这就是最大的优点了。

  Testlink平台完成之后,接下来就要面临的是测试用例的管理,面临大量的测试用例excel表格,当然最便捷的就是能够快速的通过导入方式将所有的用例都导入到Testlink中,不过即便走到这一步,才发现原来开源的软件真是可爱有可恨。虽然1.9.3版本中导入用例选项中提供了XML和XLS两种格式来导入,但试过之后发现XLS格式导入excel,并不能导入成功,至于为何导不成功,我想基本是我们自己的excel文档格式与testlink内部定义不一致导致的,与其去研究他哪些格式不对,还不如尝试另一种方式XML导入。说到这里,便立刻去网上翻了一翻,发现没有现成可以用的工具以及方法,即便有一个,居然还是收费的~其实,Excel转换XML,基本思路都差不多,也就是将Excel单元格的数据取出来,然后通过一些拼凑,成为与XML格式一致,然后生成XML即可,不过这个中间的转换还是比较麻烦的,基本步骤如下:

  1、首先,在Testlink中手动编写一个测试用例

  2、然后,将刚才编写的用例导出一份XML格式

  3、通过编辑工具打开XML文件,取其格式

  4、通过脚本读取Excel文件以及单元格的内容

  5、接着将读取的Excel单元格内容对应XML格式进行拼接,完成符合XML的格式

  6、最后生成XML文件

思路基本上就是这样了,经过一番周折,我这里通过VBS来模拟完成了此过程,而且还有辅助界面,这样避免了因为不同文件不同路径而需要每次都修改源代码,界面基本实现如下:

  1、先获取文件,这里需要输入绝对的文件路径和名称,如下图:  

  

  2、按照如上步骤,确定之后,需要输入读取的Excel中目标表格的名称,如下图:

  

  3、接着以上步骤,确定之后,需要输入转换之后的XML文件保存的路径以及名称,如下图:  

  

  4、确定后待转换结束,会给出提示,并提示总共完成多少条数据的转换,如下图所示:

  

  基本上通过如上四个步骤就能快速完成Excel转换XML,然后就可以通过转换之后的XML格式的文件导入TestLink的测试用例中,如果导入成功,则说明脚本正确地完成此了此功能~

  下一章节中将会详细介绍代码的实现,并贴出源代码~

以下是通过VBScript实现的Excel数据转换成XML格式,主要用于实现Testlink1.9.3~1.9.10的测试用例导入。代码实现如下:

根据到处的测试用例xml,定义一下我的Excel的格式如下:

编号 用例名称 摘要 重要性 测试方式 前提 步骤 期望结果 实际结果
1 2 3 4 5 6 7 8 9

如果还没有开始写用例的,可以一依据这个模板,在excel中编写用例,以下脚本是按照单元格的顺序读取的,所以这里的格式要调整,脚本中也要做相应的调整。

脚本实现如下:

Dim objexcel,objworkbook,objsheet,objxml_inter,objxml,totalrow,row,id,excelStr

‘========================================
‘创建Excel对象,关闭Excel对象--函数
‘=========================================
Function getExcel(excelname, excelpath)
Set objexcel = CreateObject("excel.application")
Set objworkbook = objexcel.Workbooks.Open(excelpath)
Set objsheet = objworkbook.Sheets(excelname)
End Function

Function clsExcel()
objworkbook.Close
End Function
‘============================================

Function dealStr(excelStr)
    For id=2 To 8
        excelStr = Replace(excelStr,id&"、","<br/>"&id&"、")
        excelStr = Replace(excelStr,id&".","<br/>"&id&".")
    Next
    dealStr=excelStr
End Function

‘========================
‘获取Excel单元格数据,并将XML的格式写入到对应的单元格,之后通过创建XML对象生成XML文件
‘========================
Function getExcelData()
row=2
objxml_inter=""
Do While Not (objsheet.cells(row,2).value="")

‘internalid
objxml_inter=objxml_inter&CStr("<testcase internalid=""")  ‘
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,1))) ‘内部用例编号
objxml_inter=objxml_inter&CStr(""" name=""")

‘caseName
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,2))) ‘用例名称
objxml_inter=objxml_inter&CStr(""">")

objxml_inter=objxml_inter&CStr("<node_order><![CDATA[0]]></node_order>")

‘externalid
objxml_inter=objxml_inter&CStr("<externalid><![CDATA[")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,1))) ‘外部用例编号
objxml_inter=objxml_inter&CStr("]]></externalid>")

‘summary
objxml_inter=objxml_inter&CStr("<summary><![CDATA[<p>")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,3))) ‘摘要
objxml_inter=objxml_inter&CStr("</p>]]></summary>")

‘preconditions
objxml_inter=objxml_inter&CStr("<preconditions><![CDATA[<p>")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,6))) ‘前置条件
objxml_inter=objxml_inter&CStr("</p>]]></preconditions>")

‘execution_type    ‘执行方式
objxml_inter=objxml_inter&CStr("<execution_type><![CDATA[1]]></execution_type>")

‘importance    ‘重要性
objxml_inter=objxml_inter&CStr("<importance><![CDATA[2]]></importance>")

‘steps
objxml_inter=objxml_inter&CStr("<steps>")

‘step
objxml_inter=objxml_inter&CStr("<step>")

‘step_number
objxml_inter=objxml_inter&CStr("<step_number><![CDATA[1]]></step_number>")

‘action
objxml_inter=objxml_inter&CStr("<actions><![CDATA[<p>")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,7))) ‘测试步骤
objxml_inter=objxml_inter&CStr("</p>]]></actions>")

‘expectedresults
objxml_inter=objxml_inter&CStr("<expectedresults><![CDATA[<p>")
objxml_inter=objxml_inter&CStr(dealStr(objsheet.cells(row,8))) ‘预期结果
objxml_inter=objxml_inter&CStr("</p>]]></expectedresults>")

‘execution_type
objxml_inter=objxml_inter&CStr("<execution_type><![CDATA[1]]></execution_type>")

objxml_inter=objxml_inter&CStr("</step>")
objxml_inter=objxml_inter&CStr("</steps>")

objxml_inter=objxml_inter&CStr("</testcase>")

‘CStr(objsheet.cells(x,1)),CStr(objsheet.cells(x,2))
‘MyFile.Write(objxml_inter)
‘WScript.Echo x-1
row=row+1
Loop
totalrow = row-2
End Function

‘========================
‘创建XML文件
‘========================
Sub CreateXML
Dim fileObj, XmlFile
Set fileObj = CreateObject("Scripting.FileSystemObject")
Set XmlFile = fileObj.CreateTextFile(XMLname, True)
‘xml title
objxml=CStr("<?xml version=""1.0"" encoding=""GBK""?>")
objxml=objxml&CStr("<testcases>")
objxml=objxml&objxml_inter
objxml=objxml&CStr("</testcases>")
XmlFile.Write(objxml)
XmlFile.Close
End Sub

excelpath = Inputbox("请输入Excel文件正确的路径名和文件名:","TestLink 1.9.10小助手: Excel转换XML工具")

If excelpath = "" Then
    MsgBox "文件名不能为空!"
    WScript.Quit
ElseIf InStr(excelpath,".xls") < 1 Then
    MsgBox "文件名格式不对!"
    WScript.Quit
End    If

excelname = InputBox("请输入Excel中所要操作的表格名称:","TestLink 1.9.10小助手: Excel转换XML工具")

If excelname = "" Then
    MsgBox "文件名不能为空!"
    WScript.Quit
End If

XMLname = InputBox("请输入转换之后的XML文件保存路径和名称:","TestLink 1.9.10小助手: Excel转换XML工具")
If XMLname = "" Then
    MsgBox "文件名不能为空!"
    WScript.Quit
ElseIf    InStr(XMLname,".xml") < 1 Then
    MsgBox "文件名格式不对!"
    WScript.Quit
End    If

‘初始化excel对象
Call getExcel(excelname, excelpath)
‘读入Excel数据
Call getExcelData()
‘写入数据, XML
CreateXML
‘关闭Excel对象
Call clsExcel()

‘提示信息
MsgBox "完成从Excel到XML的数据转换,总共"+CStr(totalrow)+"条!"

脚本保存本地,选择编码方式为unicode,后缀名为.vbs

2014-7-11-log:解决导入用户提示外部用例ID相同的问题,直接取excel表中的用例编号,所以excel表中的用例编号是不能相同的,应该是唯一的。

时间: 2024-12-28 21:08:19

TestLink学习七:TestLink测试用例Excel转换XML工具的相关文章

TestLink学习二:Windows搭建TestLink环境

环境准备: 搭建php5.4.39+apache2.2+mysq5.5.28l环境 (可参考http://www.cnblogs.com/yangxia-test/p/4414161.html) (注意:testlink1.9.13要求php5.4以上.) 一.Testlink环境搭建 下载你需要用的TestLink版本,本文的TestLink的版本是1.9.13,下载地址:http://sourceforge.net/projects/testlink/files/TestLink%201.9

xStream完美转换XML、JSON

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 它们都完美支持JSON,但是对xml的支持还不是很好.一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象的描述.这里将会介绍xStream对JSON.XML的完美支持.xStream不仅对XML的转换非常友好,而且提供annotation注解,可以在JavaBean中完成对xml节点.属性的描述.以及对JSON也支持,只需要提供

Spark学习七:spark streaming与flume集成

Spark学习七:spark streaming与flume集成 标签(空格分隔): Spark 一,启动flume flume-conf.properties文件 agent002.sources = sources002 agent002.channels = channels002 agent002.sinks = sinks002 ## define sources agent002.sources.sources002.type = exec agent002.sources.sour

X-stream完美转换XML、JSON

一.准备工作 1. 下载jar包.及官方资源 xStream的jar下载地址:https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/xstream-distribution/1.3.1/xstream-distribution-1.3.1-bin.zip 官方的示例很全,官方参考示例:http://xstream.codehaus.org/tutorial.html 添加xstream-

xStream完美转换XML、JSON(转)

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html 它们都完美支持JSON,

通过XSLT转换XML

Hellow,every body.又与大家见面了,哈哈.今天我与大家分享一下XSLT,XSL,XML,XPath.因为项目中有些功能用到了XSLT.XML等技术.所以今天好好研究了一下这几个方面的技术,宋桑说过嘛,要学会总结归纳.所以,要把自己学到东西写出来.一来温习一遍,二来与大家交流学习一下. 在研究这些技术的Demo中,发现有用唱片名字来做例子的.所以,无意中发现了一张唱片,发现了一个歌手.感觉不错,与大家分享一下.Bob Dylan----<Empire Burlesque>,很带感

C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例

XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml的显示样式,我们先来看如何在xml中引用xsl文件 如下代码示例: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="

springMVC3学习(七)--Interceptor拦截器

Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.handler.HandlerInterceptorAdapter适配器, 实现这个接口或继承此类,能够很方便的实现自己的拦截器. 有下面三个方法: Action之前运行 public boolean preHandle(HttpServletRequest request, HttpServletR

简单三步学会如何将excel转换成word

对于Excel和Word之间的转换问题,我们需要下载一款叫迅捷的PDF转换器,它可以帮我们解决这个问题.对于专业的事情就用该交给专业的软件来做,社会分工越来越精细化,时间就是金钱,语气自己浪费时间做笨功夫,不如用这个时间去做你擅长的有价值的事情,然后把这件事交给别人. 操作非常简单,只用三步就完成了:     1.首先下载安装迅捷PDF转换软件,双击打开软件,在软件左侧选择要转换的类型"文件转Word",然后点击上面的"添加文件"按钮,在弹出的界面上选择要转换的Ex