httprunner 2.x学习17 - summary结果统计和 html 报告生成

前言

调用HttpRunner类的run方法运行用例后,会返回测试结果统计。
得到测试结果后加载html测试报告模板,最终得到一个html测试报告。

summary结果统计

接着上一篇调用HttpRunner类执行用例https://www.cnblogs.com/yoyoketang/p/15210874.html

from httprunner.api import HttpRunner
import json
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

runner = HttpRunner(log_level="INFO")
summary = runner.run('login/login1.yml')
print(summary)

# 美化输出结果
print(json.dumps(summary, indent=4))

summary结构如下

{
"success": true,
"stat": {
"testcases": {
"total": 1,
"success": 1,
"fail": 0
},
"teststeps": {
"total": 1,
"failures": 0,
"errors": 0,
"skipped": 0,
"expectedFailures": 0,
"unexpectedSuccesses": 0,
"successes": 1
}
},
"time": {
"start_at": 1630412192.7478883,
"duration": 0.32332420349121094
},
"platform": {
"httprunner_version": "2.5.7",
"python_version": "CPython 3.6.6",
"platform": "Windows-10-10.0.17134-SP0"
},
"details": [
{
"success": true,
"stat": {
"total": 1,
"failures": 0,
"errors": 0,
"skipped": 0,
"expectedFailures": 0,
"unexpectedSuccesses": 0,
"successes": 1
},
"time": {
"start_at": 1630412192.7478883,
"duration": 0.32332420349121094
},
"records": [
{
"name": "login case1",
"status": "success",
"attachment": "",
"meta_datas": {
"name": "login case1",
"data": [
{
"request": {
"url": "http://127.0.0.1:8000/api/v1/login",
"method": "POST",
"headers": "{\n \"User-Agent\": \"python-requests/2.18.4\",\n \"Accept-Encoding\": \"gzip}",
"body": "{\n "username": "test",\n "password": 123456\n}"
},
"response": {
"ok": true,
"url": "http://127.0.0.1:8000/api/v1/login",
"status_code": 200,
"reason": "OK",
"cookies": "{}",
"encoding": "utf-8",
"headers": "{\n \"Date\": \"Tue, 31 Aug 2021 12:16:34 GMT\",\n \"Content-Type\": \"application/json\",}",
"content_type": "application/json",
"body": "{\n \"code\": 0,\n \"msg\": \"login success!\",\n \"username\": \"test\",\n \"token\": \"8574e73da21a954633703719c7171020326e5478\"\n}"
}
}
],
"stat": {
"response_time_ms": 318.78,
"elapsed_ms": 315.666,
"content_size": 109
},
"validators": {
"validate_extractor": [
{
"comparator": "equals",
"check": "status_code",
"check_value": 200,
"expect": 200,
"expect_value": 200,
"check_result": "pass"
}
]
}
},
"meta_datas_expanded": [
{
"name": "login case1",
"data": [
{
"request": {
"url": "http://127.0.0.1:8000/api/v1/login",
"method": "POST",
"headers": "{\n \"User-Agent\": \"python-requests/2.18.4\",\n \"Accept-Encoding\": \"gzip, deflate\"}",
"body": "{\n "username": "test",\n "password": 123456\n}"
},
"response": {
"ok": true,
"url": "http://127.0.0.1:8000/api/v1/login",
"status_code": 200,
"reason": "OK",
"cookies": "{}",
"encoding": "utf-8",
"headers": "{\n \"Date\": \"Tue, 31 Aug 2021 12:16:34 GMT\",\n \"Content-Type\": \"application/json\"}",
"content_type": "application/json",
"body": "{\n \"code\": 0,\n \"msg\": \"login success!\",\n \"username\": \"test\",\n \"token\": \"8574e73da21a954633703719c7171020326e5478\"\n}"
}
}
],
"stat": {
"response_time_ms": 318.78,
"elapsed_ms": 315.666,
"content_size": 109
},
"validators": {
"validate_extractor": [
{
"comparator": "equals",
"check": "status_code",
"check_value": 200,
"expect": 200,
"expect_value": 200,
"check_result": "pass"
}
]
}
}
],
"response_time": "318.78"
}
],
"name": "logincase",
"in_out": {
"in": {},
"out": {}
}
}
]
}

生成 HTML 测试报告

生成html报告调用get_report.py 里面的 gen_html_report()函数

def gen_html_report(summary, report_template=None, report_dir=None, report_file=None):
""" render html report with specified report name and template

Args:
summary (dict): test result summary data
report_template (str): specify html report template path, template should be in Jinja2 format.
report_dir (str): specify html report save directory
report_file (str): specify html report file path, this has higher priority than specifying report dir.

"""

gen_html_report()函数可以传四个参数

  • summary  上一步运行用例后生成的汇总报告(dict)

  • report_template 指定自定义的 HTML 报告模板,模板必须采用 Jinja2 的格式

  • report_dir(可选): 指定生成报告的文件夹路径

  • report_file(可选): 指定生成报告的文件路径,该参数的优先级高于 report_dir

report_template 模板地址默认为None,默认生成自带的模板报告

from httprunner.api import HttpRunner
from httprunner.report import gen_html_report
import json
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

runner = HttpRunner(log_level="INFO")
summary = runner.run('login/login1.yml')
print(summary)

# # 美化输出结果
# print(json.dumps(summary, indent=4))

# 生成测试报告
gen_html_report(summary=summary)

运行后默认在项目根目录生成reports文件夹

html报告打开

可以点开详情查看

report_template参数可以自定义模板,参考https://www.cnblogs.com/yoyoketang/p/13121392.html

《HttpRunner 3.x接口自动化实战》网易云视频课程

HttpRunner2.X 版本和 3.X 版本的区别到底有哪些?(吐血总结!)

(0)

相关推荐

  • Executive Summary和Introduction有何不同?

    说到executive summary,留学生们应该并不陌生,但是你真的了解它吗?据小编了解,很多留学生在初次接触executive summary的时候,就经常将之与introduction弄混,以 ...

  • httprunner 3.x学习17 - 断言字符串包含

    前言 校验接口返回结果,我们习惯校验实际结果和期望结果相等,如果只是部分相等可以用contains包含校验 校验包含 先看下httprunner/builtin/comparators.py 关于 c ...

  • httprunner 2.x学习5-测试用例集(testsuite)

    前言 httprunner 分层主要是分三层:api.testcase.testsuites 前面讲分层的时候讲到api单独封装每个接口,testcase可以有多个测试步骤,调用api层的接口是写测试 ...

  • httprunner 2.x学习4-测试用例分层

    前言 httprunner 2.x版本最大的改进就是分层机制了,1.x的版本是线性设计的,每个用例都是独立的. 一个用例里面涉及到流程性的,我们测试修改个人信息是否修改成功,在yaml文件里面需写3个 ...

  • httprunner 2.x学习3-variables变量声明与引用

    前言 在 HttpRunner 中,支持变量声明(variables)和引用($var)的机制.在 config 和 test 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通 ...

  • httprunner 2.x学习2-extract提取token值参数关联

    前言 如何将上个接口的返回token,传给下个接口当做请求参数?这是最常见的一个问题了. 解决这个问题其实很简单,我们只需取出token值,设置为一个中间变量a,下个接口传这个变量a就可以了.那么接下 ...

  • httprunner 2.x学习1-环境与登录接口案例

    前言 由于之前写过一个 httprunner 系列是针对 1.5.8 版本写的教程, httprunner版本更新的还挺快的,最近已经到3.x版本了,看了下改动还是挺大的. 但是考虑到目前还是有很多公 ...

  • httprunner 2.x学习9-生成测试报告ExtentReport

    前言 httprunner 可以自定义生成测试报告的模板,1.x版本里面有个 extent_report_template.html 模块非常美观. 但是生成报告的时候会报错:jinja2.excep ...

  • httprunner 2.x学习8-参数化(引用 debugtalk 函数)

    前言 httprunner 参数化数据源指定支持三种方式: 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况 通过内置的 parameterize(可简写为P ...

  • httprunner 2.x学习7-参数化(引用外部csv数据)

    前言 httprunner 参数化数据源指定支持三种方式: 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况 通过内置的 parameterize(可简写为P ...