2. 报告模板文件格式与结构
在 TestStand 中,报告并不是“程序运行完自动吐出来的一张纸”,而是由报告模板文件驱动、由运行时数据填充后生成的结果文件。模板决定了报告的骨架、样式和数据落点,TestStand 引擎则负责把测试结果、步骤状态、测量值、时间戳等信息注入模板。要真正掌控报告输出,必须先理解三种主流模板格式——HTML、XML 与纯文本——各自的组成方式,以及占位符、样式表和数据绑定这三条基本规则。
三种模板格式的定位差异
HTML 模板面向“人看”的场景,最终生成带样式的网页报告,适合打印、归档和浏览器查看;XML 模板面向“机器读”的场景,输出结构化数据,便于后续被数据库、MES 或自研分析工具解析;纯文本模板则面向“轻量与兼容”,生成无格式的 .txt 报告,适合日志留存或对格式无要求的快速输出。三者并非互斥,同一个测试序列可以按需选择不同模板,甚至同时输出多种格式。
从文件结构看,HTML 模板本质是一份带特殊标记的网页;XML 模板是一份带占位节点的结构化文档;文本模板则是一份带占位符的普通文本。它们的共同点是:模板本身不含真实数据,只含“数据应该放在哪里”的约定。这个约定就是占位符。
占位符:模板与数据的接口
占位符是模板中标记“此处将被替换”的符号。在 TestStand 报告模板里,常见写法是用双尖括号或百分号包裹的字段名,例如 <<StepName>>、<<Status>>、<<Measurement>>。引擎在生成报告时,会按当前步骤或序列的上下文,把这些占位符替换为实际值。
占位符通常分为几个层级:序列级字段(如序列名、开始时间、总状态)、步骤级字段(如步骤名、步骤状态、测量值、单位、上下限)、以及循环/多测点场景下的重复块。理解层级很关键——如果把步骤级占位符写到序列级位置,替换结果会为空或报错。实际配置时,建议先在 TestStand 的 Report Options 中确认当前模板支持的字段列表,再对照填写。
下面这张图展示了 HTML 模板从“静态骨架”到“数据填充”再到“最终报告”的绑定关系,同时标出了占位符、样式表与数据源三者的位置。
样式表:让报告可读且可维护
HTML 模板的样式通常不直接写在标签里,而是通过 <link> 引用外部 CSS 文件,或在 <style> 块中集中定义。这样做的好处是:模板只负责结构,样式只负责外观,两者可以独立修改。例如把表格边框、状态颜色、字体大小统一写在 CSS 中,当需要把“Fail 显示为红色”改成“Fail 显示为橙色”时,只改 CSS 即可,不必动模板结构。
在 TestStand 的实际工程中,常见做法是把 CSS 与模板放在同一目录,用相对路径引用。需要注意:如果报告要分发到其他机器查看,CSS 文件必须随报告一起拷贝,否则样式会丢失。若希望报告完全自包含,可以把 CSS 内联进 <style> 块,代价是模板体积变大、复用性下降。
数据绑定:从字段到落点
数据绑定解决的是“哪个占位符取哪个字段”的问题。在 TestStand 中,绑定关系由模板中的占位符名称与引擎提供的字段名共同决定。以步骤级绑定为例,一个典型的 HTML 表格行可以写成:
<tr>
<td><<StepName>></td>
<td><<Status>></td>
<td><<Measurement>></td>
<td><<Units>></td>
<td><<Limits.Low>> ~ <<Limits.High>></td>
</tr>
引擎在生成报告时,会为每个步骤重复这一行,并把对应字段填入。若某个步骤没有测量值,<<Measurement>> 可能被替换为空字符串或 “N/A”,具体行为取决于模板配置。因此,模板设计时要考虑“字段缺失”的情况,避免报告出现空白列或错位。
XML 模板的绑定逻辑类似,但输出的是标签结构,例如 <Step Name="<<StepName>>" Status="<<Status>>">。文本模板则更简单,通常用制表符或固定宽度对齐,例如 <<StepName>>\t<<Status>>\t<<Measurement>>。三种格式的绑定规则一致,差别只在“包裹数据的语法”不同。
模板设计中的常见判断
选择哪种模板,取决于报告的使用者。如果报告要给人看、要打印、要带颜色和表格,选 HTML;如果报告要被程序解析、要入库、要对接 MES,选 XML;如果只是快速留存一份纯文本记录,选文本模板。实际项目中,也常见“HTML 给人看 + XML 给系统读”的双模板组合。
在编写模板时,建议遵循三条实践规则:第一,先确认字段名,再写占位符,避免拼写错误导致空值;第二,样式与结构分离,CSS 独立维护;第三,对可能缺失的字段做兜底处理,例如用默认值或条件块。掌握这三点,模板就能稳定支撑后续的报告自动生成工程。
Components\ReportTemplates 下,可以直接打开参考其占位符写法与 CSS 组织方式,这是最快的学习路径。