赞
踩
allure是轻量级、灵活的,支持多语言的测试报告工具。它不仅以简洁的 Web 报告形式非常简洁地展示了已测试的内容,而且允许参与开发过程的每个人从日常执行中提取最大的有用信息测试。
从开发/质量保证的角度来看,诱惑报告缩短了常见缺陷的生命周期:测试失败可以分为缺陷和中断的测试,还可以配置日志、步骤、fixture、附件、时间、历史记录以及与TMS和缺陷跟踪系统的集成,因此负责的开发人员和测试人员将掌握所有信息。
Allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成到jenkins中去。
每个报告的入口点都是带有仪表板和小部件的“概览”页面
概述页面包含几个默认小部件,代表项目和测试环境的基本特征。
在“套件”选项卡上,可以找到按套件和类分组的已执行测试的标准结构表示。
查看从测试数据中收集的不同统计信息:状态细分或严重性和持续时间图。
Timeline 选项卡可视化测试执行的回顾,allure 适配器收集测试的精确时间,在此选项卡上,它们根据其顺序或并行时间结构进行排列。
对于行为驱动方法,此选项卡根据 Epic、Feature 和 Story 标签对测试结果进行分组。
Packages 选项卡表示测试结果的树状布局,按不同的包分组。
介绍了allure报告的组成部分之后,我们来学习一下怎么安装allure和使用allure,并生成精美的测试报告。
(1)下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.13.5/(这里以2.13.5为例)
(2)下载allure.zip
(3)解压、进入bin目录把bin目录加入Path环境变量
配置环境变量如下图所示:
(1)使用命令行安装(推荐)
pip install allure-pytest
(2)使用界面安装
在settings安装,如下图所示:
使用方法 | 参数值 | 参数说明 |
---|---|---|
@allure.epic() | epic描述 | 定义项目、当有多个项目使用,往下是Feature |
@allure.feature() | 模块名称 | 用例按照模块区分、有多个模块时给每个起名字 |
@allure.story() | 用例名称 | 用例的描述 |
@allure.title() | 用例标题 | 用例标题 |
@allure.testcase() | 用例相关链接 | 自动化用例对应的功能存放系统的地址 |
@allure.issue() | 缺陷地址 | 对应缺陷管理系统里边的缺陷地址 |
@allure.description() | 用例描述 | 对测试用例的详细描述 |
@allure.step() | 操作步骤 | 测试用例的操作步骤 |
@allure.severity() | 用例等级 | blocker、critical、normal、minor、trivial |
@allure.link() | 定义链接 | 用于定义一个需要在测试报告中展示的连接 |
@allure.attach() | 添加附件 | 添加测试报告附件,如数据、文本、图片、视频、网页 |
(1)在测试执行期间收集结果:
#—alluredir这个选项用于指定存储测试结果的路径
pytest [测试文件] -s -q --alluredir=./result/
(2) 查看测试报告
方式一:测试完成后查看实际报告、在线看报告,会直接打开默认浏览器展示当前报告
#注意这里的serve书写
allure serve ./result/
方式二:从结果生成报告、这是一个启动tomcat的服务.需要两个步骤:生成报告,打开报告
#注意:覆盖路径加--clean
allure generate ./result/ -o ./report/ --clean
#./report是报告所在的路径
allure open -h 127.0.0.1 -p 8883 ./report/
#方式一:test_allure1.py是模块名,./result是报告地址
pytest test_allure_demo.py -vs -q --alluredir=./result
allure serve ./result/
# 方式二
pytest test_allure_demo.py -vs -q --alluredir=./result
allure generate ./result/ -o ./report/ --clean
allure open -h 127.0.0.1 -p 8883 ./report/
(1) @allure.feature() 、@allure.title()
使用方法 | 参数值 | 参数说明 |
---|---|---|
@allure.feature() | 模块名称 | 用例按照模块区分、有多个模块时给每个起名字 |
@allure.title() | 用例标题 | 用例标题 |
import allure
@allure.feature("搜素模块")
class TestSearch():
def test_case1(self):
print("case1")
def test_case2(self):
print("case2")
执行生成报告命令:
pytest test_allure_demo.py -vs -q --alluredir=./result
执行测试报告服务的命令:
allure serve ./result/
(2)@allure.story()、@allure.step()
使用方法 | 参数值 | 参数说明 |
---|---|---|
@allure.story() | 用例名称 | 用例的描述 |
@allure.step() | 操作步骤 | 测试用例的操作步骤 |
import allure @allure.feature("登录模块") class TestLogin(): @allure.story("登陆成功") def test_login_success(self): print("这是登录测试用例:登录成功") @allure.story("登录失败") def test_login_failure_a(self): print("这是登录测试用例:登录失败") @allure.story("用户名缺失") def test_login_failure_b(self): print("用户名缺失") @allure.story("密码缺失") def test_login_failure_c(self): with allure.step("点击用户名"): print("输入用户名") with allure.step("点击密码"): print("输入密码") print("点击登录") with allure.step("点击登录之后登录失败"): assert '1' == 1 print("登录失败") @allure.story("登录失败") def test_login_failure_d(self): print("这是登录:测试用例,登录失败")
执行命令:
pytest test_allure_demo.py -vs -q --alluredir=./result
allure generate ./result/ -o ./report/ --clean
allure open -h 127.0.0.1 -p 8883 ./report/
或者只执行其中的部分用例:
执行用例:只执行feature为登录模块的用例
pytest test_allure_demo.py --allure-features="登录模块" -vs
执行用例:只执行stroy为登录失败的用例
pytest test_allure_demo.py --allure-stories="登录失败"
执行用例:执行登录模块下的登录成功用例
pytest test_allure_demo.py --allure-features "登录模块" --allure-stories "登录成功" -vs
(3)@allure.link()、 @allure.attach() 、@allure.issue()
使用方法 | 参数值 | 参数说明 |
---|---|---|
@allure.link() | 定义链接 | 用于定义一个需要在测试报告中展示的连接 |
@allure.issue() | 缺陷地址 | 对应缺陷管理系统里边的缺陷地址 |
@allure.attach() | 添加附件 | 添加测试报告附件,如数据、文本、图片、视频、网页 |
import allure TEST_CASE_LINK = 'https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637' @allure.link('https://ceshiren.com') def test_with_link(): pass @allure.link('https://www.baidu.com', name='百度地址') def test_with_named_link(): print("这是link") @allure.issue('140', 'bug地址') def test_with_issue_link(): print("这是issue") @allure.testcase(TEST_CASE_LINK, '测试用例管理平台地址') def test_with_testcase_link(): print("这是testcase")
(4)@allure.severity()
使用方法 | 参数值 | 参数说明 |
---|---|---|
@allure.severity() | 用例等级 | blocker、critical、normal、minor、trivial |
使用场景:通常测试有PO、冒烟测试、验证上线测试。按重要性级别来分别执行的,比如上线要把主流程和重要模块都跑一遍
运行级别为:normal,critical的测试用例
pytest -s -v 文件名--allure-severities normal,critical --alluredir=./result
五种优先级:
级别 | 描述 |
---|---|
BLOCKER | 阻塞缺陷(功能未实现,无法下一步) |
CRITICAL | 严重缺陷(功能点缺失) |
NORMAL | 一般缺陷(边界情况,格式错误) |
MINOR | 次要缺陷(界面错误与ui需求不符) |
TRIVIAL | 轻微缺陷(必须项无提示,或者提示不规范) |
import allure @allure.severity(allure.severity_level.BLOCKER) def test_blocker(): print("这是BLOCKER") @allure.severity(allure.severity_level.TRIVIAL) def test_tricial(): print("TRIVIAL") @allure.severity(allure.severity_level.NORMAL) def test_normal(): print("NORMAL") @allure.severity(allure.severity_level.NORMAL) class TestClassWithNormalSeverity(object): @allure.severity(allure.severity_level.MINOR) def test_minor(self): print("这是MINOR") @allure.severity(allure.severity_level.CRITICAL) def test_critical(self): print("这是CRITICAL")
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。