jenkins 邮件 - 使用变量定制化 html 测试报告

jenkins 当中邮件插件:

Email Extension Plugin

jenkins 基本使用和邮件配置请参考测试派文章: Jenkins 集成 Python 自动化测试项目教程

本文着重来讲解:

1)在邮件正文当中,引用邮件插件提供的变量

2)自定义邮件正文的 HTML 模板。

最终要达到的效果为:

image20210624173417152.png


第一步:查看 Email Extension Plugin 提供的可用变量

1)在 Job 的【构建后操作】中选择【Editable Email Notification】

image.png


2) 翻到【Editable Email Notification】的最底部,找到【Content Token Reference】.点最右边的问号,会显示所有可用的变量。

image.png


3)【Content Token Reference】变量说明

3.1)与测试结果有关的变量:

${FAILED_TESTS} : 显示失败的用例详情

${TEST_COUNTS,var="TYPE"}: 显示用例数量。TYPE 分为 4 个维度:总数(total), 通过(pass), 失败(fail), 跳过(skip)

比如要显示用例总数,则使用 ${TEST_COUNTS,var="total"}

image.png
7H8YHP51YC3HEG2X9.png

3.2)扩展邮件正文的变量:

${FILE, path="PATH"}:path 参数的值,为相对于当前 job 工作空间的相对路径 。

image.png

3.3)与本次构建信息有关的变量:

image.png

3.4)jenkins 信息和当前 job 的信息

image.png

第二步:配置邮件标题/正文时,使用邮件变量

如果想要在邮件标题/正文当中,使用【第一步】当中的变量,

有个前提条件:要生成 jenkins 邮件插件能解析的测试结果 XML 文件, 并被 jenkins 识别到


比如 Java 语言测试框架 junit,testng 在执行用例完成之后,都会生成对应的 XML 文件,

再比如 robotframework 框架在执行用例完成之后,也会生成对应的 XML 文件。

所以这些框架,在 jenkins 当中展示测试结果的同时,邮件模板也能识别到。


python 的测试框架 pytest,同样也支持生成 XML 格式的测试结果文件。

下面,以 pytest 测试框架和 python 自动化为案例,配置邮件中使用变量。

第一步:在 pytest.main()添加参数:--junitxml=xxxxx.xml

image.png

第二步:在 jenkins 的 job 任务的【构建后操作】中,添加【Publish Junit test result report】,配置测试结果 XML 文件

image.png

第三步:在 jenkins 的 job 任务的【构建后操作】中,添加【Editable Email Notification】,使用测试有关的变量。

image.png

第四步:执行任务,发送邮件。邮件正文中即可看到用例数。

image.png

第二步(2):定义邮件正文 HTML 模板,HTML 模板中使用变量

在邮件正文当中,我们也可以事先定义好一个 HTML 模板,在模板当中使用变量。

然后在邮件的【Default Content】中,引用 HTML 文件。

仍然以 pytest 测试框架和 python 自动化为案例,配置邮件中使用变量。

第一步:在 pytest.main()添加参数:--junitxml=xxxxx.xml

第二步:在 jenkins 的 job 任务的【构建后操作】中,添加【Publish Junit test result report】,配置测试结果 XML 文件

与上面的保持一致,此处不再复述。


第三步:编写一个 HTML 报告模板,并与自动化项目代码放在一起。

注意:HTML 文件中,不能使用外部 CSS 样式文件,否则邮件正文中无法解析出样式 。

本文中使用的邮件报告模板如下(test_templates.html):

image.png

在邮件模板当中,使用了邮件插件提供的变量。

第四步:在 jenkins 的 job 任务的【构建后操作】中,添加【Editable Email Notification】,使用 HTML 文件。

在【Default Content】当中,使用以下表达式:

${FILE,path="test_templates.html"}

path= 相对路径 相对于当前项目的工作空间

image.png

第五步:执行任务,发送邮件。邮件正文中即可看到对应的 HTML 效果。

image.png


邮件正文乱码问题

小伙伴们第一次发送邮件成功后,可能会收到如下样子:

image.png


解决方案:

  1. 添加系统变量。
    变量名:JAVA_TOOL_OPTIONS
    变量值:-Dfile.encoding=UTF8

image.png

  1. 打开 jenkins,系统管理--系统设置,在全局属性处勾选 Environment variables,添加编码环境变量 LANG=zh_CN.UTF-8

image.png

1 操作
xiaojian 在 2021-09-27 15:22:34 更新了该帖
1 回帖
请输入回帖内容 ...
  • 15-001

    多线程执行的话,会覆盖 result.xml。导致用例数量是最后执行完的,这个有什么好的解决方式吗