allure介绍
allure是一个轻量级、灵活的、支持多语言的测试报告工具
多平台的,奢华的report框架
可以为dev/qa提供详尽的测试报告、测试步骤、log
为管理层提供high level统计报告
java语言开发的,支持pytest、javascript、PHP、ruby等
可以集成到Jenkins
安装
mac安装allure:brew install allure
pytest使用allure:pip install allure-pytest
官网:http://allure.qatools.ru/
文档:https://docs.qameta.io/allure/
使用
进行结果收集
pytest --alluredir=/tmp/my_allure_results
生成报告方法一:(此命令将在默认浏览器中显示生成的报告)
allure serve /tmp/my_allure_results
生成报告方法二:
allure generate /tmp/my_allure_results -o /tmp/my_allure_reports
allure open -h 127.0.0.1 -p 8883 /tmp/my_allure_reports (用ccontrol + c 结束)
allure 添加标识
@allure.feature(‘功能名称’)
@allure.story(‘子功能名称’)
@allure.step(‘步骤细节’)
@allure.attach(‘具体的文本信息’) 需要附加的信息,可以是数据、文本、图片、视频、网页
如果只需要测试登录功能运行的时候可以加限制过滤:
pytest 文件名 --allure-features ‘购物车功能’ --allure-stories ‘加入购物车’
feature和story关系
feature相当于一个功能,一个大的模块,将case分类到某个feature中,报告中的behavior中显示,相当于testsuite
story相当于对应这个功能或者模块下的不同场景、分支功能,属于feature之下的结构,报告在features中显示,相当于testcase
feature和story相当于父子关系
step
测试过程中的每个步骤,一般放在具体逻辑方法中
可以放在关键步骤中,在报告中显示
在app web自动化测试中,建议每切换到一个新的页面当作一个step
用法
@allure.step()只能以装饰器的形式放在类或者方法上面
with allure.step():可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含
关联链接
@allure.link(“测试用例的链接”)
@allure.link(“测试用例的链接”, name=‘链接的名称’)
关联测试用例
@allure.testcase(‘http://www.baidu.com’, ‘测试用例’)
关联bug
@allure.issue(‘140’, ‘这是一个issue’)
在执行时,需要加 --allure-link-pattern=issue:http://www.myissue.com/{}
按重要性级别进行一定范围测试
在方法、函数和类上面加 @allure.severity(allure.severity_level.TRIVLAL)
blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
critical级别:临界缺陷(功能点缺失)
normal级别:普通缺陷(数值计算错误)
minor级别:次要缺陷(界面错误与UI需求不符)
trivial级别:轻微缺陷(必输项无提示,或者提示不规范)
执行
pytest XXX.py --alluredir=path --allure-severities normal,critical
import allure
@allure.severity(allure.severity_level.NORMAL)
def test_demo_1():
print('test_demo_1')
@allure.severity(allure.severity_level.CRITICAL)
def test_demo_2():
print('test_demo_2')
@allure.severity(allure.severity_level.NORMAL)
def test_demo_3():
print('test_demo_3')
@allure.severity(allure.severity_level.MINOR)
def test_demo_4():
print('test_demo_4')
添加附件
添加网页
allure.attach(body,name,attachment_type,extension)
allure.attach(‘首页’,‘这是错误页的结果信息’,allure.attachment_type.HTML)
添加照片
allure.attach.file(source,name,attachment_type,extension)
allure.attach.file(’./result/b.png’,name=‘这是一个图片’,attachment_type=allure.attachment_type.PNG)
def test_attach_html():
allure.attach('<head></head><body>首页</body>', '这是错误页的结果信息', allure.attachment_type.HTML)
def test_attach_png():
allure.attach.file('./result/photo1.jpg', name='这是一个图片', attachment_type=allure.attachment_type.JPG)