概述
报告主要包含总览、类别、测试套件、图表、时间刻度、功能、包等7大部分,支持自定义诸多信息,包括附件添加、缺陷链接、案例链接、测试步骤、Epic、Feature、Story、Title、案例级别等,相当强大。
allure与pytest的结合使用可以呈现完美的测试报告
总览
Allure常用装饰器
装饰器 | 名称 | 功能描述 |
---|---|---|
@allure.epic(“测试模块_demo1”) | “史诗” | 功能块,往下再分feature、story |
@allure.feature(“测试模块_demo2”) | “功能” | 标注功能模块,往下分story |
@allure.story(“测试模块_demo3”) | “故事” | 标注features下的分支功能模块,具有相同feature或story的用例将规整到相同模块下,执行时可用于筛选 |
@allure.issue(“BUG号:123”) | “问题” | 问题标识,关联标识已有的问题,可为一个url链接地址 |
@allure.testcase(“用例名:测试字符串相等”) | “用例” | 用例标识,关联标识用例,可为一个url链接地址 |
@allure.severity(“critical”) | “严重级别” | 优先级,包含blocker, critical, normal, minor, trivial 几个不同的等级 |
@allure.step(“测试步骤”) | “测试步骤” | 测试步骤 |
Epic、Feature、Story、Tag定制详解
四个修饰符:epic、feature、story、tag,包含关系是 从左到右,越来越小。
1、相同的epic、feature、story汇聚在一起
2、tag:标签
1)可继承,方法继承类
2)可重写,方法自身标签优先,没有再用类标签
3)标签可以同时打多个,逗号分割
3、只执行部分 feature/stories 的话,用下面命令
py.test --alluredir report --allure-features=feature1,feature2 --allure-stories=story1,story2
添加Epic、Feature、Story、Tag,Report展示如下图:
代码块
#! /usr/bin/env python
# -*-coding:utf-8-*-
import allure
import pytest
@allure.epic('allure.X--@allure.epic')
@allure.feature("Func01测试用例集合--@allure.feature")
@allure.tag('核心关注')
class TestFunc01Case(object):
@allure.story('case01--@allure.story')
@allure.severity('blocker')
@allure.tag('重要的', 'bug回归')
def test_func01_case_01(self):
# 以下内容为测试用例描述
u"""
@allure.severity():包含blocker, critical, normal, minor, trivial 几个不同的等级
Allure中对严重级别的定义:
1、 Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
2、 Critical级别:临界缺陷( 功能点缺失)
3、 Normal级别:普通缺陷(数值计算错误)
4、 Minor级别:次要缺陷(界面错误与UI需求不符)
5、 Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)
"""
assert 1 == 1
Severity定制详解
@allure.severity():包含blocker, critical, normal, minor, trivial 几个不同的等级
1、Allure中对严重级别的定义:
1) Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
2) Critical级别:临界缺陷( 功能点缺失)
3) Normal级别:普通缺陷(数值计算错误)
4) Minor级别:次要缺陷(界面错误与UI需求不符)
5) Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)
2、如果希望只跑critical和blocker这两个等级的case
在原先命令上加上–allure-severities=critical,blocker参数
py.test --alluredir report --allure-severities=critical,blocker -s –q
添加Severity,Report展示如下图:
代码实现
#! /usr/bin/env python
# -*-coding:utf-8-*-
import allure
import pytest
@allure.epic('allure.X--@allure.epic')
@allure.feature("Func01测试用例集合--@allure.feature")
@allure.tag('核心关注')
class TestFunc01Case(object):
@allure.story('case01--@allure.story')
@allure.severity('blocker')
@allure.tag('重要的', 'bug回归')
def test_func01_case_01(self):
assert 1 == 1
@allure.story('case02--step、attach用法--@allure.story')
@allure.severity('critical')
def test_func01_case_02(self):
pass
@allure.story('case03--@allure.story')
@allure.severity('normal')
def test_func01_case_03(self):
pass
@allure.story('case04--issue、testcase@allure.story')
@allure.severity('minor')
def test_func01_case_04(self):
pass
@allure.story('case05--@allure.story')
@allure.severity('trivial')
def test_func01_case_05(self):
pass
Attach、Step定制详解
1、attach:附加
@allure.attach在报告中增加额外的信息:allure.attach(’arg1’,’arg2’,’arg3’):
arg1:是在报告中显示的名称
arg2:表示添加的内容
arg3:表示添加的类型(支持类型:HTML,JPG,PNG,JSON,OTHER,TEXTXML)
往报告中添加额外的信息
allure.attach(‘this is an attach’,’aaaaa’)
2、step:步骤
@allure.step在报告中增加步骤显示
有两种使用方法:
1、@allure.step() 只能以装饰器的形式放在类或者方法上面
2、with allure.step():可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含,用于格式化输出
添加Attach、Step,Report展示如下图:
代码实现
#! /usr/bin/env python
# -*-coding:utf-8-*-
import allure
import pytest
@allure.epic('allure.X--@allure.epic')
@allure.feature("Func01测试用例集合--@allure.feature")
@allure.tag('核心关注')
class TestFunc01Case(object):
@allure.story('case01--@allure.story')
@allure.severity('blocker')
@allure.tag('重要的', 'bug回归')
def test_func01_case_01(self):
pass
@allure.story('case02--step、attach用法--@allure.story')
@allure.severity('critical')
def test_func01_case_02(self):
assert 2 == 2
allure.attach('this is attach', 'attach用法')
# 在报告中添加图片
with allure.step('预期结果'):
allure.attach.file('test.png', 'test11111', allure.attachment_type.PNG)
with allure.step('实际结果'):
print ('匹配')
Issue和TestCase定制详解
issue和testCase用法一样,但展示结果issue前面会有一个图标
添加Issue、TestCase,Report展示如下图:
代码实现
#! /usr/bin/env python
# -*-coding:utf-8-*-
import allure
import pytest
@allure.epic('allure.X--@allure.epic')
@allure.feature("Func01测试用例集合--@allure.feature")
@allure.tag('核心关注')
class TestFunc01Case(object):
@allure.story('case01--@allure.story')
@allure.severity('blocker')
@allure.tag('重要的', 'bug回归')
def test_func01_case_01(self):
pass
@allure.story('case04--issue、testcase@allure.story')
@allure.severity('minor')
@allure.issue("https://jira.ahi-fintech.com/browse/QA-1", 'Bug链接')
@allure.testcase("http://www.testlink.com", 'testcase链接')
def test_func01_case_04(self):
u"""
issue(url, name=None)
testcase(url, name=None)
return link(url, link_type=LinkType.ISSUE, name=name)
return link(url, link_type=LinkType.TEST_CASE, name=name)
"""
pass