文章目录

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

前言

在自动化测试时,经常会统计一些测试得到的统计结果或者仿真结果等。若每次仿真完成后手动将每个结果值依次添加到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 ) ];endend
end

由于自动化报告生成的格式以及用途不同,因此上面的代码仅截取了生成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自动化报告模板

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

  1. 自动化测试报告发送--飞书(基于python)

    自动化测试报告发送--飞书(基于python) 实现代码 实现代码 import requests from requests_toolbelt import MultipartEncoder cla ...

  2. matlab直扩序列生成,基于matlab的直接序列扩频通信系统仿真毕业论文

    基于matlab的直接序列扩频通信系统仿真毕业论文 基于 MATLAB 的直接序列扩频通信系统仿真1.实验目的:学习扩频通信系统技术理论基础及直接序列 DS 扩频系统基本原理,并设计出直扩通信系统模型 ...

  3. 变压器空载合闸matlab,基于MATLAB的变压器空载合闸时励磁涌流仿真分析

    · 电气与自动化 · 李兴宁,等 ·基于 MATLAB的变压器空载合闸时励磁涌流仿真分析 基于 MATLAB的变压器空载合闸时励磁涌流仿真分析 李兴宁,王书杰 (泰 州职 业技术学 院,江苏 泰州 2 ...

  4. matlab 自动化,基于MATLAB的自动化测试系统及方法技术方案

    [技术实现步骤摘要] 基于MATLAB的自动化测试系统及方法 本专利技术涉及一种自动化测试系统及方法,特别涉及一种基于MATLAB的自动化测试系统及方法. 技术介绍 目前,无线电技术的应用越来越广,相 ...

  5. Jenkins+Newman+Postman生成接口自动化测试报告

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 文章目录 1. Jenkins的安装与配置 1.1 安装jenkins 1.2 jenkins中文设置 ...

  6. matlab 安装出来封面就没了,基于Matlab的计算报告书封面生成方法及计算机存储介质与流程...

    本发明涉及一种计算报告书封面生成方法及计算机存储介质,特别是涉及一种基于Matlab的计算报告书封面生成方法及计算机存储介质. 背景技术: 技术人员在采用Matlab大型矩阵计算软件进行工程计算等科研 ...

  7. ExtentReports生成自动化测试报告

    ExtentReports介绍 ExtentReports用于生成自动化测试报告,相对于Testng自带的测试报告和ReportNG比较清晰.简洁,话不多说直接进入正题吧 引入依赖包 <depe ...

  8. jmeter——jmeter+ant生成优化的HTML接口自动化测试报告

    jmeter+ant生成优化的HTML测试报告 一.最终实现效果展示 二.实现方式 1.环境搭建 2.实现原理 3.报告生成方式 三.实现步骤 1.jar包转移:实现ant调用jmeter脚本 2.j ...

  9. 基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中

    主控芯片dsp tms320f28335,基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中. 该模型利用id=0的矢量控制,实现了永磁 ...

最新文章

  1. 超长JVM总结,面试必备
  2. ntbackup 创建卷影复制:ffffffff 时出现错误
  3. logstash创建不了索引_「技术选型」Elasticsearch vs. Solr-选择您的开源搜索引擎
  4. STM32 IO口输入输出模式的简洁见解
  5. appsan可以扫描linux吗,[经验]使用appscan实现多站扫描简单自动化
  6. 爬虫-urlparse与urlsplit
  7. HXSafeGuard工程通过VS2010编译未安装VS2008出现以下错误
  8. 【编程珠玑】第十二章 取样问题
  9. xmarin.android导航栏,Xamarin.Forms中心标题和透明导航栏 - Android
  10. 【Vegas2006】8月24日-花豆擀面做法
  11. 配置linux danted socks服务
  12. 官宣,PyTorch 1.0 稳定版本现已推出
  13. linux/windows查询文件特定内容并写入目标文件
  14. 关于csdn登陆提示验证码
  15. 肇庆学院计算机基础学分,肇庆学院学分制学籍管理实施细则试行-肇庆学院教务处.DOC...
  16. Linux中nexus使用ccproxy进行代理下载包
  17. 汽车芯片TJA1057GTK/3高速 CAN 收发器3 毫米 x 3 毫米 x 0.85 毫米
  18. 使用photoswipe展示图片
  19. 我的无影云电脑初体验
  20. 鸿蒙开发实例 | 为什么选择HarmonyOS?

热门文章

  1. 【SpringBoot 2学习笔记】《十一》SpringBoot2配置多数据源访问数据库
  2. 利用机器学习进行情感分析
  3. SystemUI 人脸识别解锁后指纹消耗次数并没有清除
  4. 【matlab图像处理】图像的算术运算实践
  5. 会计与python结合-Python 19会计(Z)
  6. 不思议迷宫c语言基础,不思议迷宫新手谜题汇总
  7. 百度之星的十五年:坚定技术信仰,普惠AI顶级人才
  8. gimp 2 照片 换底色_使用GIMP或Photoshop创建Instagram风格的照片效果
  9. 【干货】统计学 × 数据分析 · 上
  10. js前端身份证号、手机号脱敏、手机号、身份证号加密(ios浏览器兼容性问题)