Allure头部装饰器组合
根据【装饰器叠加】里面的操作
增加allureoperator.py
函数编写一个组合装饰器compose
将
@allure.feature('大模块')
@allure.story('子模块')
@allure.title('这个test_b')
@allure.issue('url', '问题单:xxx')
def test_b():
print('ok')
变成
代码语言:javascript复制@compose(feature='大模块',
story='子模块',
title='这个test_b',
issue=('url', '问题单:xxx'))
def test_b():
print('ok')
完整代码:
代码语言:javascript复制def compose(**kwargs):
"""
将头部ALlure装饰器进行封装
可以采用:
feature='模块名称'
story='用户故事'
title='用例标题'
testcase='测试用例链接地址'
severity='用例等级(blocker、critical、normal、minor、trivial)'
link='链接'
issue=('bug地址', 'bug名称')
的方式入参数
:param kwargs:
:return:
"""
def deco(f):
builtins.__dict__.update({'allure': allure})
# 失败重跑
if kwargs.get("reruns"):
f = pytest.mark.flaky(
reruns=kwargs.get("reruns", 2), # 默认共执行2次
reruns_delay=kwargs.get("reruns_delay", 5) # 默认等待5秒
)(f)
kwargs.pop("reruns")
if kwargs.get("reruns_delay"):
kwargs.pop("reruns_delay")
_kwargs = [('allure.' key, value) for key, value in kwargs.items()]
for allurefunc, param in reversed(_kwargs):
if param:
f = eval(allurefunc)(param)(f)
else:
f = eval(allurefunc)(f)
return f
return deco
Allure报告中的附件插入
在报告中,经常需要贴上图片或者文字信息来辅助问题定位
增加两个方法:
- attach_png:在报告中贴上图片附件
- attach_text:在报告中贴上文字附件
def attach_png(pic_path, name, ele=None):
"""
将png图片存放到allure报告上
:param pic_path: 图片位置
:param name: 展示的名称
:param ele: ElementOperator对象
:return:
"""
try:
if ele:
ele.screenshot_pic(pic_path)
allure.attach.file(source=pic_path, name=name, attachment_type=allure.attachment_type.PNG)
logger.info(f'截图 {name},存放到 {pic_path} 成功!')
except Exception as e:
logger.error(f'存放图片{name}失败:{e}')
代码语言:javascript复制def attach_text(body, name):
"""
将text放在allure报告上
:param body: 内容
:param name: 标题
:return:
"""
try:
allure.attach(body=str(body), name=str(name), attachment_type=allure.attachment_type.TEXT)
logger.info(f'存放文字 {name}:{body} 成功!')
except Exception as e:
logger.error(f'存放文字失败 {name}:{body}!:{e}')