赞
踩
Python 主流自动化测试报告插件有三个:HTMLTestRunner、Pytest-html 和 Allure。HTMLTestRunner是一个比较古老的报告模板,界面也不是很好看。Pytest-html界面很简洁,看起来也很直观,是一款比较不错的报告插件。如果你想提升下逼格,让你的自动化测试报告变得高大上,那么请选择 Allure 。
Allure 是一款轻量级的开源自动化测试报告生成框架。它支持绝大部分测试框架,比如TestNG、Junit 、pytest、unittest 等。本文主要介绍 Pytest 框架结合 Allure 生成格式统一、美观的测试报告。
安装&配置环境变量
Allure下载最新版本:
- vim ~/.zshrc
- PATH="/Users/rain/allure-2.9.0/bin:${PATH}"
- export PATH
- source ~/.zshrc
环境变量配置好后,allure测试一下。
注意:allure-pytest与allure版本务必一致,否则会生成空白报告。
pip3 install allure-pytest
生成报告
生成测试报告仅需两步。
1.生成测试数据 pytest test_allure_demo.py --alluredir ./report
2.生成测试报告 allure serve report
我随便写了一段代码测试一下,仅供参考。
- #!/usr/bin/env python
- # -*- encoding: utf-8 -*-
- '''
- @File : testcase_001.py
- @Time : 2021/06/20 12:07:09
- @Author : 软件质量保障
- @wechat : ISTE1024
- @Email : byteflow@163.com
- @Blog : https://www.zhihu.com/people/iloverain1024
- @Copyright : 侵权必究
- '''
- import pytest
- import requests
- import yaml
- import allure
- @allure.feature("编辑页面")
- class RequestHandler:
- def __init__(self):
- """session管理器:维持会话,可以让我们在跨请求时保存某些参数"""
- self.session = requests.session()
- def httpcore(self, method, url, params=None, data=None, json=None, headers=None, **kwargs):
- return self.session.request(method,url, params=params, data=data, json=json, headers=headers,**kwargs)
- def close_session(self):
- """关闭session"""
- self.session.close()
- @allure.step("编辑页面")
- def get_test_data(test_data_path):
- case = [] # 存储测试用例名称
- http = [] # 存储请求对象
- expected = [] # 存储预期结果
- data = yaml.safe_load(open(test_data_path,encoding='utf-8'))
- for td in data:
- case.append(td.get('case', ''))
- http.append(td.get('http', {}))
- expected.append(td.get('expected', {}))
- parameters = zip(case, http, expected)
- return case, parameters
- cases, params = get_test_data('./testcases/data/TEST_DATA_001.yaml')
- @allure.story("测试")
- @pytest.mark.parametrize("case,http,expected", list(params), ids=cases)
- def test_main(case, http, expected):
- method = http["method"]
- url = http["path"]
- headers = http["headers"]
- json = http["body"]['payload']
- req = RequestHandler()
- login_res = req.httpcore(method, url=url, headers=headers, data=json)
- print('--登陆结果---')
- assert login_res.json()['code'] == expected['response']['code']
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
1.生成测试数据
# 其中 --alluredir参数的作用是指出生成的报告文件夹,运行完后就会在当前目录下生成一个report文件夹,report文件夹下放着生成报告文件。
pytest test_allure_demo.py --alluredir ./report
2.生成测试报告
# 执行后,会自动打开浏览器的一个页面来显示测试报告。
allure serve report
报告结构
通过上图的报告页面可以看到,allure整体分为7部分:
Overview、Categories、Suites、Graphs、Timelines、Behavior、Packages。
1.Overview
概览页是报告所有内容的汇总页,可以通过点击对应的元素跳转到相应的页面。大体上汇总以下内容:
·测试结果统计 - 报告执行结果统计。
· 执行 - 如果此报告表示几次测试执行,这里将显示每次执行的统计数据。
· 历史趋势 - 如果测试积累了一些历史数据,它的趋势将被计算并显示在图表中。
· 环境 - 测试环境的信息。
· 测试套件 - 可以跳转到Suites页面。
· 类别 - 点击跳转到Categories页面。
空白处内容作者没有配置,所以没有展示。
2.Categories
默认存在两类缺陷:
· 产品缺陷(测试失败)
· 测试缺陷(测试中断)
当然,类别也提供创建自定义缺陷分类的方法,以应用于测试结果分类。可以在 allure-results 目录中添加 categories.json 文件。
- [
- {
- "name": "Ignored tests",
- "matchedStatuses": ["skipped"]
- },
- {
- "name": "Infrastructure problems",
- "matchedStatuses": ["broken", "failed"],
- "messageRegex": ".*bye-bye.*"
- },
- {
- "name": "Outdated tests",
- "matchedStatuses": ["broken"],
- "traceRegex": ".*FileNotFoundException.*"
- },
- {
- "name": "Product defects",
- "matchedStatuses": ["failed"]
- },
- {
- "name": "Test defects",
- "matchedStatuses": ["broken"]
- }
- ]
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
参数:
·name [必填]:分类的名字
· matchedStatuses [可选]:测试用例的运行状态,默认是["failed", "broken", "passed", "skipped", "unknown"]
· messageRegex [可选]:测试用例运行的错误信息,使用正则表达式匹配。默认是".*"
· traceRegex [可选]:测试用例运行的堆栈信息,使用正则表达式匹配。默认是".*"
3.Suites
在测试集选项卡上,可以按测试套件和类分组展示已执行测试。
4.Graphs
图表页上可以查看从测试数据收集的不同统计信息: 状态和持续时间图等。
5.Timelines
时间轴能够展示可视化测试执行,Allure 适配器收集测试执行时间,并且在选项卡上根据顺序进行排列。
6.Behaviors
allure支持行为驱动测试的展示,该选项卡根据特性和故事标签对测试结果进行分组展示。
7.Packages
根据不同的测试代码所在的package以树状布局展示测试结果。
Allure常用特性
@allure.feature:用于描述被测试产品功能模块
@allure.story:用于描述feature的用户场景,即功能子模块
@allure.step : # 用于描述测试步骤,将会输出到报告中
@allure.attach:用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等
@allure.severity:标注测试用例的重要级别
- blocker:阻塞缺陷
- critical:严重缺陷
- normal:一般缺陷
- minor:次要缺陷
- trivial:轻微缺陷
@allure.description: 标注测试用例的描述
@allure.issue:对应缺陷管理系统里面的链接
@allure.link:定义一个链接,在测试报告展现
空白页问题
allure空白页 报错 Uncaught TypeError: P.a.registerLanguage is not a function,Uncaught ReferenceError: allure is not defined问题解决方法。
原因:本地安装的allure版本和allure-pytes插件版本不一致造成的;
查看二者的版本:
#查看allure版本
allure --version
# allure-pytest插件版本
python3 list
- 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
- 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
- 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
- 分享他们的经验,还会分享很多直播讲座和技术沙龙
- 可以免费学习!划重点!开源的!!!
- qq群号:485187702【暗号:csdn11】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。