一. 简介
在测试过程中,为了更好地管理项目及其不同模块下的用例,我们可以利用 Allure 根据模块对用例进行分类,分类后的测试报告就不再是一堆平铺直叙的用例列表,而会变成一个有层级、有结构的专业测试报告。 这不仅有助于整理报告结构,还支持只运行特定类别下的用例。
二、Allure 添加用例分类
Allure 报告通过层级化的方式展示用例结构,通常包含
Epic(史诗)、Feature(特性)和Story(故事)三个层级。
epic 与 feature,feature 与 story 类似于父子关系:
-
@allure.epic:史诗。对应敏捷开发中的概念,通常定义为一个大的项目或需求集。 -
@allure.feature:特性/功能模块。相当于一个具体的功能模块或测试套件,包含多个子分支。 -
@allure.story:故事/子功能。对应功能模块下的具体场景或分支功能。
2.1 项目/需求层级分类 - @allure.epic(name)装饰器
若要在测试报告中清晰地展示用例所属的项目,应使用
@allure.epic装饰器。该装饰器通常应用于测试类,而非单个测试用例,用于定义一个宏观的项目或需求集。由于其覆盖范围较广,我们通常会在 epic 之下,进一步使用粒度更细的
@allure.story来定义具体的用户故事或业务场景,从而形成清晰的层级结构。
-
语法:
@allure.epic("项目需求描述") -
业务场景:安卓端手机基本功能测试
-
定义项目分类(Android),记录其关联的测试用例
-
代码示例
pythonimport allure @allure.epic("Android") class TestEpic: def test_case1(self): print("拨打电话") def test_case2(self): print("发送短信") def test_case3(self): print("接听电话") def test_case4(self): print("链接WiFi") def test_case5(self): print("开启热点")- 效果如下
- 直接显示URL

- 直接显示URL
- 效果如下
-
-
2.2 功能模块层级分类 - @allure.feature(name)装饰器
通过
@allure.feature(name)可以将项目分类中进行模块基本的分类,使用例管理更清晰。
-
语法:
@allure.feature('功能名称') -
业务场景:安卓端手机存在多个模块如:电话、蓝牙、WiFi等
-
定义模块分类(call、WiFi),记录和管理其模块内部用例
-
代码示例
pythonimport allure @allure.epic("Android") @allure.feature("call") class TestEpicCall: def test_case1(self): print("拨打电话") def test_case2(self): print("发送短信") def test_case3(self): print("接听电话") @allure.epic("Android") @allure.feature("WiFi") class TestEpicWifi: def test_case4(self): print("链接WiFi") def test_case5(self): print("开启热点")- 生成报告查看结果

- 生成报告查看结果
-
-
2.3 子功能/场景层级分类 - @allure.story(name)装饰器
如果要在报告中看到测试的子功能的描述,可以使用
@allure.story。
-
语法:
@allure.story('子功能名称')- 相同的子功能名称会被归类为一个子功能层级下
-
业务场景:安卓端手机存在多个模块如:电话、蓝牙、WiFi等
-
在模块分类下,按子功能进行进一步分类
-
代码示例
pythonimport allure @allure.epic("Android") @allure.feature("call") class TestEpicCall: @allure.story("通讯功能") def test_case1(self): print("拨打电话") @allure.story("通讯功能") def test_case3(self): print("接听电话") @allure.story("发送短信") def test_case2(self): print("发送短信") @allure.epic("Android") @allure.feature("WiFi") class TestEpicWifi: @allure.story("链接WiFi") def test_case4(self): print("链接WiFi") @allure.story("开启热点") def test_case5(self): print("开启热点")- 生成报告查看结果

- 生成报告查看结果
-
-