一种TestStand报表数据提取方法
2020-02-02陶宣彤
陶宣彤
(株洲中车时代电气有限公司 湖南省株洲市 412000)
在工业自动化生产过程中,利用TestStand 软件来搭建自动化测试系统,已被广泛应用。TestStand 软件的特点包括具有图形化的操作界面,支持主流应用开发环境编写的代码模块,支持多线程并行测试等[1]。根据用户需求,TestStand 还可以自动生成ASCII、HTML、XML、ATML 报表。测试完成之后,如何快速处理大量的测试报表并从中提取出想要的测试信息,这就给用户提出了一个问题。本文基于此背景,利用Python 语言来介绍一种TestStand报表数据提取方式。
1 开发环境
本文使用的编程语言Python3.8.5,主要解析TestStand2017 生成的ATML 报表,报表格式设置为ATML 5.00 Standards Report Document。
1.1 Python程序设计语言
Python 是一种面向对象、解释型计算机程序设计语言,使用简单、方便。C 或者C++这类编译性语言编写的程序需要通过编译器,将源文件转换为计算机使用的二进制代码,并且需要复制二进制代码到内存中运行。而Python语言编写的程序可以直接从源代码运行。Python 同时提供了强大的标准库,可以帮助处理各种工作,包括文档生成,网页浏览等与系统有关的操作。
1.2 TestStand报表
图1:测试报告内容
图2:ATML 格式文件内容
图3:程序运行界面
图4:运行结果
TestStand 主要提供了ASCII、HTML、XML、ATML 这4 种报表格式。这几种报表格式相比较,HTML 格式的报表解析难度最大,报表数据和格式紧密耦合,需要自定义解析器。ASCII 格式的报表解析难度比HTML 格式低,也是需要自定义解析器,但是格式信息受限。XML、ATML 这两种格式都使用的是标准的XML 架构,可使用XML API 轻松解析。但是ATML 格式的文件在大小上比XML 要小,性能也比XML 格式的要好。本文选择格式为“ATML 5.00 Standards Report Document”的文件进行解析。
2 实现过程
2.1 XML文件
本文利用TestStand 构造了一个测试序列,运行之后生成了多份测试报告,测试报告内容具体如图1所示。
测试报表对应的ATML 格式文件部分内容如图2所示。
本文研究的是在目标文件夹以及其子文件夹中,找到所有TestStand 报表,并提取所有测试报表中,用户所需的某一项测试步骤的结果,并将提取结果返回。例如用户设定提取图中测试步骤“CESHI1-1”,则返回测试步骤名称“CESHI1-1”以及结果“Failed”、具体数值“7.889069184305”。
2.2 具体代码
2.2.1 报表搜寻
OS(operate system)模块是Python 标准库中的一个用于访问操作系统的模块,使用OS 模块中提供的接口,可以实现跨平台的访问。本文需要搜索文件夹以及其子目录文件夹中所有的XML 文件,所以需要使用OS 模块。部分实现代码如下所示。
2.2.2 文件解析
Python 有三种 XML 解析方式:SAX(simple API for XML)、DOM(Document Object Model)、ElementTree。SAX 通过逐行扫描文档,一边扫描一边解析,对于大型文档的解析拥有巨大优势。ElementTree 解析速度快,API 使用也很方便。DOM 是 W3C 组织推荐的标准编程接口,DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入XML 文件。
TESTSTAND 报表内容层次清晰,可以根据节点名称逐层解析,本文采用DOM 来解析XML 文件。部分实现代码如下。
当用户设置测试名称与文档中的测试名称一致时,提取测试结果,部分代码如下。
2.3 程序运行
程序运行后界面如图3所示。
用户输入所需测试步骤名称后,报表数据提取结果如4所示。
3 结束语
本文介绍了一种基于Python 解析TestStand 测试报表的方法,实现了用户自定义所需测试项目,自动提取所有报表中有关该测试项目的具体测试结果,具有实际应用价值。