TestLinkConverter编程纪要
TestLinkConverter小工具主要是为了解决XML以及Excel之间相互转换的问题。测试管理工具导出用例文件格式为XML,而一般测试人员习惯用Excel设计测试用例,导致设计的测试用例无法导入到TestLink以及TestLink导出的测试用例无法提供Excel视图;支持XML转换为Excel后,对应Excel转换为XML;XML和Excel相互转换。
点击下载
1. 概要
支持解析的XML为TestLink默认导出的XML结构;经过工具生成后对应Excel展示用例如下图:
支持解析的Excel格式默认为导出的Excel格式,见上图。
注: 支持导出文件的相互转换,即导出XML再转为Excel或者导出Excel再次转为XML。
2. XML -> Excel
首先解决的问题是如何将TestLink导出的XML文件进行转换提供给测试人员习惯使用的Excel视图。一般的XML格式TestLink一般导出后结构如下,对应XML各个字段定义参考TestLink字段解析:
TestLinkConverter采用C#自带的XmlDocument对xml文件进行解析,但是有的xml可能存在多个testsuite嵌套的情况,就需要获取所有嵌套下的TestCase,这里采用递归的方法获取所有testcase。
/// <summary> /// 递归获取测试套下所有测试用例 /// </summary> /// <param name="xmlNodes">根节点下子节点集合</param> private void RecursionGetNodes(List<XmlNode> xmlNodes) { foreach (XmlNode node in xmlNodes) { if (node.Name.Equals("testsuite")) { List<XmlNode> childNodes = node.ChildNodes.Cast<XmlNode>().ToList(); RecursionGetNodes(childNodes); } else { if (node.Name.Equals("testcase")) { this._nodesList.Add(node); } } } }
3. 功能实现
4.1 进度条功能
对应进度条的功能,首先不确定解析文件以及生成文件具体耗时,进度条而且需要与之同步;进度条采用系统自带的ProgressBar控件。
private delegate void SetPos(int ipos); public Form() { InitializeComponent(); ProgressBarShow.SetProgressValue += this.SetProgressValue; } private void SetProgressValue(int ipos) { if (this.InvokeRequired) { SetPos setPos = new SetPos(SetProgressValue); this.Invoke(setPos, new object[] {ipos}); } else { this.progressBar.Value = Convert.ToInt32(ipos); } }
新增类用于绑定进度条实时更新。
public static class ProgressBarShow { public delegate void SetProgressHandler(int ipos); public static SetProgressHandler SetProgressValue { get; set; } public static void ShowProgressValue(int ipos) { if (SetProgressValue != null) { SetProgressValue.Invoke(ipos); } } }
5. 引用三方类库
5.1 log4net
下载地址: https://logging.apache.org/log4net/download_log4net.cgi
参考博客: http://www.cnblogs.com/kissazi2/p/3389551.html
文章源地址:https://www.yaitza.cn/2017/05/21/2017-05-21-CSharp-TestLink/
代码归档地址:https://github.com/yaitza/TestLinkConverter