900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 自动化测试报告表格html的生成(基于MATLAB)

自动化测试报告表格html的生成(基于MATLAB)

时间:2019-12-10 19:19:37

相关推荐

自动化测试报告表格html的生成(基于MATLAB)

文章目录

前言自动化生成报告总体步骤报告模板附件

前言

在自动化测试时,经常会统计一些测试得到的统计结果或者仿真结果等。若每次仿真完成后手动将每个结果值依次添加到excel或者报表中,这些机械重复的工作最好交给程序完成。为此,本篇文章在MATLAB环境下就自动化生成html结果报表进行介绍。

自动化生成报告总体步骤

1、将需要生成报告的数据利用程序汇总到一个专门统计所有报告输出的变量中。这个汇总变量中记录了关于报告中的每个数据的描述,变量值,变量名称等信息。如果汇总的报告不是变量,也可进行不同的标记容纳到该汇总变量中。

2、将最终这个汇总变量解析,得到其中哪些是作为行、哪些是作为列、哪些是作为表头等。

3、将每个变量对应html的表格属性标记关联,并将这些变量名

变量描述、变量值、以及html的标记等字符串串起来,写入到html文件中。

4、为了使得输出的自动化报告带有一些美化效果,因此可以准备一个利用ccs样式定义好的html模板,并将串起来的字符串写入到html模板中。

报告模板

首先,需要准备一个报告的html模板,这里的html模板主要是利用ccs样式对html中的表格做样式规定,在网上查找后有很多相关的表格样式,下面将css中设置对表格样式设置如下:可参考

header {background-image: url("");margin: 0px 0px;background-position: center;background-color: #ffffff;background-repeat: no-repeat;top: 0;}section {width: 90%;margin: 0 auto;top: 0px;}h1,h2,h4,h5,h6 {font-family: Verdana;color: #000000c7;}p {font-family: 黑体,Arial, Helvetica, sans-serif;font-size: 22px;color: rgb(0, 0, 0);margin: 21px 0px;}figure {border: 2px solid transparent;margin: 0px 0px;width: 100%;}image {align-content: center;}figcaption {text-align: center;}table {table-layout: fixed;word-break: break-all;border-collapse: collapse;width: 100%;border-left: 0px solid rgb(0, 0, 0);border-right: 0px solid rgb(0, 0, 0);}table {width: 100%;border-collapse: collapse;}table caption {font-size: 2em;font-weight: bold;margin: 1em 0;}th {border: 1px solid rgb(0, 0, 0);text-align: center;padding: 8px 0;font-size: 28px;background-color: rgba(172, 212, 245,0.3);}td {border: 1px solid #999;text-align: center;padding: 8px 0;font-size: 24px;}table thead tr {background-color: #008c8c;color: #fff;}table tbody tr:nth-child(odd) {}table tbody tr:hover {background-color: rgba(228, 227, 227, 0.4);}table tbody tr td:first-child {color: rgb(0, 0, 0);}table tfoot tr td {text-align: right;padding-right: 20px;}

由于模板中没有具体表格的内容,因此浏览效果如下所示,在本文的附件中也可下载该模板:

带有报告详细内容的显示效果:

其body中的html如下所示,需要说明的是,下面的html为程序自动生成的,然后添加到模板的html中,从而达到上面图上的效果,其中每一行的名称以及数值等均是程序中所需要报告中展示的内容。

<body><header id="header"><div align="center"><font style="color: black; letter-spacing: 20px; font-size: 340%">自动化测试报告模板</font></div></header><section id="content"><p align="left">测试时间:xxxxxxxxxxxxx &nbsp; 测试人员:xxxx</p><table><tr><th colspan="3">测试项目1结果展示</th></tr><tr><td>名称1</td><td>\</td><td template="name1">1</td></tr><tr><td>名称2</td><td>\</td><td template="name2">2</td></tr><tr><td>名称3</td><td>\</td><td template="name3">3</td></tr><tr><td>名称4</td><td>\</td><td template="name4">4</td></tr><tr><td>名称5</td><td>\</td><td template="name5">5</td></tr></section></body>

本文中是基于MATLAB自动化仿真报告,因此所用到的语言是基于MATLAB的,用于生成上述html主体内容的MATLAB代码如下:

for i = 1:length( element )if isfield( element( i ), 'type' )% complextable , tableitem ,switch lower( element( i ).type )% 表格开头 <table>case 'complextable'HTMLString= [ GBL_document, '<table>', char( 10 ) ];% 表格内容case 'tableitem'% collection_row_value('text','名称1','unit','distance','value','name1');if isfield( element, 'element' ) && ...length( element( i ).element ) > 1 && ...strcmpi( element( i ).element( 1 ).type, 'Text' ) && ...isfield( element( i ).element( 1 ), 'attribute' ) && ...isfield( element( i ).element( 1 ).attribute( 1 ), 'data' )% 组成 <tr> <td> 描述 </td> <td> 单位 </td> <td> 数值 </td> <tr>% ################### 描述 ################### %HTMLString= [ GBL_document, '<tr>', char( 10 ) ];HTMLString= [ GBL_document, '<td>' ];HTMLString= [ GBL_document, element( i ).element( 1 ).attribute( 1 ).data ];HTMLString= [ GBL_document, '</td>', char( 10 ) ];HTMLString= [ GBL_document, '<td' ];% ################### 单位 ################### %unit = 'string';HTMLString= [ GBL_document, '>' ];HTMLString= [ GBL_document, '\\' ]; % 加入无单位时 '\'%HTMLString= [ GBL_document, '</td>', char( 10 ) ];HTMLString= [ GBL_document, '<td' ];% ################### 数值 ################### %tryvalue = evalin( 'base', element( i ).element( 3 ).attribute( 1 ).data );if ~strcmpi( unit, 'string' )value = floor(value*1000)/1000; % 转换为小数点三位endcatch% 当变量不存在时if strcmpi( type, 'struct' ) || strcmpi( type, 'undefined' ) || isempty( value )value = '\\';endlasterror( 'reset' )endif isnumeric( value )value = num2str( value );endHTMLString= [ GBL_document, ' template="', element( i ).element( 3 ).attribute( 1 ).data, '" >', value ];HTMLString= [ GBL_document, '</td>', char( 10 ) ];HTMLString= [ GBL_document, '</tr>', char( 10 ) ];elseif ~isempty( element( i ).element ) && ~strcmpi( element( i ).element( 1 ).type, 'tabwidth' ) && ~strcmpi( element( i ).element( 1 ).type, 'ComplexTable' )% 可能没有输出报告自动化脚本运行,导致出错HTMLString= [ GBL_document, '<tr>', char( 10 ) ];HTMLString= [ GBL_document, '<th colspan="3">', char( 10 ) ];if isfield( element( i ).element( 1 ), 'attribute' ) && ~isempty( element( i ).element( 1 ).attribute )% HTMLString= [ GBL_document, '<h3>', element( i ).element( 1 ).attribute( 1 ).data, '</h3>', char( 10 ),'</th>',char( 10 ),'</tr>'];HTMLString= [ GBL_document, element( i ).element( 1 ).attribute( 1 ).data, char( 10 ),'</th>',char( 10 ),'</tr>'];endendendendendif isfield( element( i ), 'attribute' ) && ~isempty( element( i ).attribute )end% 对表格和表格中条目内容 item 的结尾if isfield( element( i ), 'type' )switch lower( element( i ).type )case 'complextable'HTMLString= [ GBL_document, '</table>', char( 10 ) ];endendend

由于自动化报告生成的格式以及用途不同,因此上面的代码仅截取了生成html最关键的部分。这里程序中需要说明的地方有以下几点:

1、变量HTMLString一直在收集所有的html字符串,等完全收集完成后,将其插入到html模板中。

2、所有需要在报告中的变量在生成运行上面的程序之前需要提前汇总到element cell结构体数组变量中,该结构体中可以循环嵌套,进而上述程序也能循环嵌套调用,达到表格中嵌套表格的效果。

3、在element结构体中存在不同的字段,其中complextable为表格的声明,tableitem为表格的每一行,data 为每一行表格的数据,type为表格的类型,attribute为表格的属性。

4、定义收集变量函数 collection_row_value(‘text’,‘名称1’,‘unit’,‘distance’,‘value’,‘name1’),该函数输入内容即为每一行表格中的显示内容,包括该行的变量名称,变量单位,变量值等。变量的值可以通过变量的具体名称或者真实的数值等,若为具体变量名称,也可通过后期的查找变量值以及单位转化等方式进一步处理。

5、实际使用过程中上述代码仅作为参考,自动化生成html报告的核心在于程序对html一点一点的拼接而达到的效果,因此,如果对html插入段落,图片以及更多的元素等信息,需要对html不同的元素标记作为字符串,然后利用程序自动化拼接完成。

附件

1、html自动化报告模板

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。