博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
html 报告模板,HttpRunner 实现 Jinja2 自定义报告模板
阅读量:5742 次
发布时间:2019-06-18

本文共 4295 字,大约阅读时间需要 14 分钟。

使用 HttpRunner 执行完自动化测试后,会在当前路径的 reports 目录下生成一份 HTML 格式的测试报告。

默认情况

默认情况下,生成的测试报告文件会位于 reports 根目录下,文件名称为测试开始的时间。

$hrun docs/data/demo-quickstart-2.yml

/api/get-token

INFO POST http://127.0.0.1:5000/api/get-token

INFO status_code: 200, response_time: 24 ms, response_length: 46 bytes

.

/api/users/1000

INFO POST http://127.0.0.1:5000/api/users/1000

INFO status_code: 201, response_time: 3 ms, response_length: 54 bytes

.

----------------------------------------------------------------------

Ran 2 tests in0.031s

OK

INFO Start to render Html report ...

INFO Generated Html report:

reports/2018-02-27-18-20-11.html

指定报告名称

如需指定生成报告的名称,可以使用 --html-report-name 参数。

$hrun docs/data/demo-quickstart-2.yml --html-report-name demo

...

同上,省略

INFO Start to render Html report ...

INFO Generated Html report:

reports/demo/demo-2018-02-27-18-22-53.html

在 reports 目录下,将会创建一个与指定报告名称相同的文件夹,生成的 HTML 报告将位于该目录中,并且测试报告名称中也会包含测试开始的时间。

默认报告样式

在 HttpRunner 中自带了一个 Jinja2 格式的报告模版,默认情况下,生成的报告样式均基于该模版(httprunner/templates/default_report_template.html)。

测试报告形式如下:

在 Summary 中,会罗列本次测试的整体信息,包括测试开始时间、总运行时长、运行的 Python 版本和系统环境、运行结果统计数据。

report-demo-quickstart-1-overview.jpg

在 Details 中,会详细展示每一条测试用例的运行结果。

点击测试用例对应的 log 按钮,会在弹出框中展示该用例执行的详细数据,包括请求的 headers 和 body、响应的 headers 和 body、开始请求的时间戳、响应耗时(elapsed)等信息。

report-demo-quickstart-1-log.jpg

若测试用例运行不成功(failed/error/skipped),则在该测试用例的 detail 中会出现 traceback 按钮,点击该按钮后,会在弹出框中展示失败的堆栈日志,或者 skipped 的原因。

report-demo-quickstart-1-traceback.jpg

自定义报告模板(Jinja2 格式)

除了默认的报告样式,HttpRunner 还支持使用自定义的报告模板。

编写自定义模板

自定义模板需要采用 Jinja2 的格式,里面可以使用如下数据信息:

{"success":False,"stat":{"testsRun":2,"failures":0,"errors":1,"skipped":0,"expectedFailures":0,"unexpectedSuccesses":0,"successes":1},"platform":{"python_version":"CPython_3.6.4","platform":"Darwin-17.4.0-x86_64-i386-64bit"},"time":{"start_at":datetime.datetime(2018,2,27,19,13,33,376820),"duration":0.03526616096496582},"records":[{"name":"/api/get-token","status":"success","response_time":13,"attachment":"","meta_data":{"method":"POST","request_time":1519730013.377347,"response_time":13,"elapsed":0.002855,"url":"/api/get-token","request_headers":{"user-agent":"python-requests/2.18.4","Accept-Encoding":"gzip, deflate","Accept":"*/*","Connection":"keep-alive","device_sn":"FwgRiO7CNA50DSU","user_agent":"iOS/10.3","os_platform":"ios","app_version":"2.8.6","content-type":"application/json","Content-Length":"52"},"request_body":"{"sign": "958a05393efef0ac7c0fb80a7eac45e24fd40c27"}","status_code":200,"response_headers":{"Content-Type":"application/json","Content-Length":"46","Server":"Werkzeug/0.14.1 Python/3.6.4","Date":"Tue, 27 Feb 2018 11:13:33 GMT"},"response_body":"{"success": true, "token": "WD2NntPTcjGkITfp"}","content_size":46}},{"name":"/api/users/1000","status":"error","response_time":3,"attachment":"Traceback (most recent call last):\nAssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\nhttprunner.exception.ValidationError:\n\tcheck item name: status_code;\n\tcheck item value: 403 (int);\n\tcomparator: equals;\n\texpected value: 201 (int).\n","meta_data":{"method":"POST","request_time":1519730013.39279,"response_time":3,"elapsed":0.002066,"url":"/api/users/1000","request_headers":{"user-agent":"python-requests/2.18.4","Accept-Encoding":"gzip, deflate","Accept":"*/*","Connection":"keep-alive","device_sn":"FwgRiO7CNA50DSU","token":"baNLX1zhFYP11Seb","content-type":"application/json","Content-Length":"39"},"request_body":"{"name": "user1", "password": "123456"}","status_code":403,"response_headers":{"Content-Type":"application/json","Content-Length":"50","Server":"Werkzeug/0.14.1 Python/3.6.4","Date":"Tue, 27 Feb 2018 11:13:33 GMT"},"response_body":"{"success": false, "msg": "Authorizationfailed!"}","content_size":50}}],"html_report_name":"demo-quickstart-1"}

例如,我们需要在自定义模板中展示测试结果的统计数据,就可以采用如下方式进行描述:

TOTALSUCCESSFAILEDERRORSKIPPED{
{stat.testsRun}}{
{stat.successes}}{
{stat.failures}}{
{stat.errors}}{
{stat.skipped}}

在自定义报告模板时,可以参考 HttpRunner 的默认报告模板,要实现更复杂的模版功能,可参考 Jinja2 的使用文档。

使用自定义模板

使用自定义模版时,需要通过 --html-report-template 指定报告模板的路径,然后测试运行完成后,就会采用自定义的模板生成测试报告。

$hrun docs/data/demo-quickstart-2.yml --html-report-template /path/to/custom_report_template

...

同上,省略

INFO render with html report template: /path/to/custom_report_template

INFO Start to render Html report ...

INFO Generated Html report:

reports/2018-02-27-19-06-27.html

转载地址:http://acnzx.baihongyu.com/

你可能感兴趣的文章
[转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法...
查看>>
eclipse下修改项目名导致tomcat内发布名不一致的解决方法 .
查看>>
拒绝IP登陆
查看>>
第二次作业
查看>>
LeetCode Search Insert Position (二分查找)
查看>>
topcoder srm 390 div1
查看>>
【版本控制——svn】
查看>>
matlab 函数说明—conv2
查看>>
创建采购订单批到程序用的BAPI
查看>>
poj 3020 -- Antenna Placement
查看>>
姑娘你大胆地往前走——答大二学生XCL之八问
查看>>
UVA196
查看>>
ios 自定义delegate(一)
查看>>
创建美国地区的appleId
查看>>
例题10-2 UVa12169 Disgruntled Judge(拓展欧几里德)
查看>>
[c语言]c语言中的内存分配[转]
查看>>
JS 原生ajax写法
查看>>
day 10 字符编码和文件处理 细节整理
查看>>
如何打造亚秒级加载的网页1——前端性能
查看>>
版本控制git(三)-git分支
查看>>