目录
1. @allure.title
1.1 功能:
1.2 使用方式
1.3 作用
1.4 示例
2. @allure.story
2.1 功能
2.2 使用方式
2.3 作用
2.4 示例
3. @allure.feature
3.1 功能
3.2 使用方式
3.3 作用
3.4 示例
4. @allure.epic
4.1 功能
4.2 使用方式
4.3 作用
4.4 示例
5. @allure.description 和 @allure.description_html
5.1 功能
5.2 使用方式
5.3 作用
5.4 示例
5.4.1 @allure.description示例
5.4.2 @allure.description_html 示例
6. @allure.link、@allure.issue 和 @allure.testcase
6.1 功能
6.2 使用方式
6.3 作用
6.4 示例
6.4.1 @allure.link 示例
6.4.2 @allure.issue 示例
6.4.3 @allure.testcase 示例
7. @allure.severity
7.1 功能
7.2 使用方式
7.3 作用
7.4 示例
8. @allure.step
8.1 功能
8.2 使用方式
8.3 作用
8.4 示例
9、其他
9.1 动态更新测试用例信息
9.2 测试附件
前言:如果在做测试报告当中用好allure的注解,下面分别解释,例如让你理解epic>feature>story的层级关系
1. @allure.title
1.1 功能:
为测试用例自定义一个更具阅读性的标题。
1.2 使用方式
- 直接使用
@allure.title
为测试用例定义标题。 - 支持通过占位符传递参数,实现测试用例标题的参数化。
- 可以使用
@allure.dynamic.title
在测试用例执行过程中动态更新标题。
1.3 作用
提高测试用例的可读性和易理解性,便于测试人员和开发人员快速了解测试用例的目的和内容。
1.4 示例
import pytest
import allure@allure.title("登录功能测试")
def test_login():# 测试逻辑assert True
2. @allure.story
2.1 功能
描述feature的用户场景或故事背景。
2.2 使用方式
通常与@allure.feature
一起使用,构建测试用例的层次结构。
2.3 作用
- 将测试用例按照功能或模块下的不同场景进行分组。
- 清晰地展示测试覆盖范围,帮助测试人员理解测试用例的背景和目的。
2.4 示例
feature与story通常一起使用
import pytest
import allure@allure.feature("用户管理")
@allure.story("用户登录")
def test_user_login():# 测试逻辑assert True@allure.feature("用户管理")
@allure.story("用户注册")
def test_user_registration():# 测试逻辑assert True
3. @allure.feature
3.1 功能
描述测试的功能点或模块。
3.2 使用方式
作为@allure.story
的上级,用于定义测试用例所属的更大范围的功能或模块。
3.3 作用
- 构建测试用例的层次结构,便于管理和组织测试用例。
- 提供测试用例的上下文信息,帮助测试人员理解测试用例的关联性和重要性。
3.4 示例
import pytest
import allure@allure.feature("用户管理")
@allure.story("用户登录")
def test_user_login():# 测试逻辑assert True@allure.feature("用户管理")
@allure.story("用户注册")
def test_user_registration():# 测试逻辑assert True
4. @allure.epic
4.1 功能
定义史诗级别的任务或项目,相当于module级的标签。
4.2 使用方式
作为@allure.feature
的上级,用于描述更大范围的任务或项目。
4.3 作用
- 帮助测试人员理解测试用例在整个项目或任务中的位置和重要性。
- 提供测试用例的宏观背景信息,便于测试人员把握测试的整体方向和重点。
4.4 示例
import pytest
import allure# 定义史诗:用户管理系统
@allure.epic("用户管理系统")
class TestUserManagement:# 定义功能点:用户注册@allure.feature("用户注册")@allure.story("正常注册")@allure.title("测试用户正常注册功能")def test_user_registration_success(self):# 测试逻辑,这里应该包含实际的注册操作和断言# 假设注册成功assert True# 定义功能点:用户注册@allure.feature("用户注册")@allure.story("重复注册")@allure.title("测试用户重复注册功能")def test_user_registration_duplicate(self):# 测试逻辑,这里应该包含实际的注册操作和断言# 假设注册失败,因为用户名已存在assert False# 可以继续添加其他与用户管理相关的测试用例
5. @allure.description 和 @allure.description_html
5.1 功能
为测试用例添加详细描述。
5.2 使用方式
@allure.description
支持添加普通文本描述。@allure.description_html
支持添加HTML格式的描述,可以包含图片、链接等多媒体内容。
5.3 作用
提高测试报告的可读性和可理解性,使测试人员能够更清晰地了解测试用例的详细信息和测试步骤。
5.4 示例
5.4.1 @allure.description示例
import pytest
import allure@allure.feature("用户管理")
@allure.story("用户登录")
@allure.description("""
这是一个测试用户登录功能的测试用例。
测试步骤包括:
1. 打开登录页面
2. 输入用户名和密码
3. 点击登录按钮
4. 验证登录结果
""")
def test_user_login():# 测试逻辑,这里应该包含实际的登录操作和断言assert True # 假设测试通过
在这个示例中,@allure.description
装饰器为 test_user_login
测试用例添加了纯文本描述,包括测试的功能、故事和步骤。
5.4.2 @allure.description_html
示例
import pytest
import allure@allure.feature("用户管理")
@allure.story("用户登录")
@allure.description_html("""
<h2>用户登录功能测试</h2>
<p>这是一个测试用户登录功能的测试用例。</p>
<ul><li>打开登录页面</li><li>输入用户名和密码</li><li>点击登录按钮</li><li>验证登录结果</li>
</ul>
""")
def test_user_login_html():# 测试逻辑,这里应该包含实际的登录操作和断言assert True # 假设测试通过
在这个示例中,@allure.description_html
装饰器为 test_user_login_html
测试用例添加了 HTML 格式的描述。描述中使用了 <h2>
、<p>
和 <ul>
等 HTML 标签来格式化文本,使其更加易于阅读和理解。
6. @allure.link、@allure.issue 和 @allure.testcase
6.1 功能
将测试报告与bug管理工具或测试管理系统关联。
6.2 使用方式
@allure.link
用于添加一般性的链接。@allure.issue
用于添加与bug相关的链接。@allure.testcase
用于添加与测试用例相关的链接。
6.3 作用
- 便于测试人员快速定位和解决bug。
- 提供测试用例的关联信息,帮助测试人员理解测试用例的背景和来源。
6.4 示例
6.4.1 @allure.link
示例
import pytest
import allure@allure.feature("用户管理")
@allure.story("用户登录")
@allure.link("https://example.com/user-login-requirements", name="需求文档")
@allure.link("https://example.com/user-login-design", name="设计文档")
def test_user_login():# 测试逻辑assert True # 假设测试通过
6.4.2 @allure.issue
示例
import pytest
import allure@allure.feature("用户管理")
@allure.story("用户注册")
@allure.issue("https://example.com/bug-tracker/123", name="注册页面验证问题")
def test_user_registration():# 测试逻辑assert False # 假设测试失败,因为存在验证问题
6.4.3 @allure.testcase
示例
@allure.testcase
通常用于将测试用例与某个测试用例管理系统中的特定测试用例关联起来。然而,需要注意的是,在 Allure 的官方文档和常见实践中,@allure.testcase
并不是一个标准的装饰器。通常,测试用例的标识和关联是通过测试框架的元数据或配置来实现的,而不是通过装饰器。不过,如果您正在使用的测试框架或工具支持 @allure.testcase
或类似的机制来关联测试用例,您可以按照该工具或框架的文档来使用它。
由于 @allure.testcase
不是一个标准的 Allure 装饰器,这里提供一个假设性的示例,说明如果它存在的话可能会如何使用:
# 假设性的示例,因为 @allure.testcase 不是一个标准的 Allure 装饰器
@allure.feature("用户管理")
@allure.story("用户注销")
# 假设这是关联测试用例管理系统中的特定测试用例的装饰器
@allure.testcase("TMS-001")
def test_user_logout():# 测试逻辑assert True # 假设测试通过
7. @allure.severity
7.1 功能
定义测试用例的严重程度。
7.2 使用方式
通过指定不同的严重程度(如critical、normal、minor、trivial等)来标记测试用例的重要性。
7.3 作用
- 帮助测试人员优先处理重要的测试用例。
- 提供测试用例的优先级信息,便于测试人员合理安排测试计划和资源。
7.4 示例
import pytest
import allure# 定义测试用例,不指定严重性级别,则默认为 Normal
def test_with_no_severity():# 测试逻辑assert True # 假设测试通过# 定义测试用例,指定严重性级别为 Trivial(轻微)
@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():# 测试逻辑,例如界面上的小错误或不规范的提示assert "Expected Trivial Message" in some_function_output()# 定义测试用例,指定严重性级别为 Minor(次要)
@allure.severity(allure.severity_level.MINOR)
def test_with_minor_severity():# 测试逻辑,例如界面上的错误与UI需求不符assert some_ui_element_is_correct()# 定义测试用例,指定严重性级别为 Normal(普通)
@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():# 测试逻辑,例如边界情况或格式错误assert some_boundary_condition_is_met()# 定义测试用例,指定严重性级别为 Critical(临界)
@allure.severity(allure.severity_level.CRITICAL)
def test_with_critical_severity():# 测试逻辑,例如功能点缺失assert some_critical_feature_is_working()# 定义测试用例,指定严重性级别为 Blocker(阻塞)
@allure.severity(allure.severity_level.BLOCKER)
def test_with_blocker_severity():# 测试逻辑,例如功能未实现,导致无法执行下一步操作assert some_blocker_condition_is_not_met()
在上面的示例中,我们定义了五个测试用例,并为它们分别指定了不同的严重性级别。这些级别包括:
TRIVIAL
(轻微):通常用于表示必输项无提示或提示不规范等小问题。MINOR
(次要):用于表示界面错误或与UI需求不符的问题。NORMAL
(普通):用于表示边界情况、格式错误或一般的数值计算错误。CRITICAL
(临界):用于表示功能点缺失的严重问题。BLOCKER
(阻塞):用于表示功能未实现或存在其他问题,导致无法执行下一步操作。
当您运行这些测试用例并生成 Allure 测试报告时,测试用例将按照指定的严重性级别进行组织和分类,使您能够更清晰地了解测试结果的严重性和优先级。
8. @allure.step
8.1 功能
主要功能是让测试用例在 Allure 报告中显示详细的测试过程。通过为每个测试步骤添加,测试人员可以清晰地看到每个测试步骤的执行情况和结果。
8.2 使用方式
- 基本使用:
- 在测试用例的函数或方法上添加
@allure.step
装饰器,并在括号中指定步骤的描述。 - 例如:
@allure.step("打开网站首页")
,表示这是打开网站首页的测试步骤。
- 在测试用例的函数或方法上添加
- 嵌套使用:
@allure.step
支持嵌套调用,即在一个步骤中调用另一个步骤。- 嵌套步骤在 Allure 报告中会以树形结构展示,有助于测试人员更好地理解测试步骤的层次关系。
- 传递参数:
@allure.step
支持通过占位符传递参数,以便在测试步骤的描述中动态插入变量值。- 例如:
@allure.step("输入账号、密码{arg1},{arg2},并点击登录")
,其中{arg1}
和{arg2}
可以被实际的参数值替换。
8.3 作用
- 提高可读性:通过为测试步骤添加详细的描述,
@allure.step
使得测试报告更加易于阅读和理解。 - 便于调试:当测试失败时,测试人员可以快速定位到失败的步骤,并查看该步骤的详细信息和执行结果,从而更快地找到问题所在。
- 增强透明度:
@allure.step
使得测试过程更加透明,测试人员和其他相关人员可以清晰地了解测试的执行情况和结果。
8.4 示例
import pytest
import allure@allure.step("打开网站首页")
def open_website():# 执行打开网站首页的逻辑pass@allure.step("输入账号、密码")
def input_credentials(username, password):# 执行输入账号和密码的逻辑pass@allure.step("点击登录按钮")
def click_login_button():# 执行点击登录按钮的逻辑pass@allure.step("验证登录结果")
def verify_login_result():# 执行验证登录结果的逻辑pass@allure.feature("用户登录功能")
@allure.story("正常登录场景")
def test_login():open_website()input_credentials("testuser", "testpassword")click_login_button()verify_login_result()
这些注解共同构成了Allure框架的核心功能之一,即提供丰富的测试用例描述和层次结构信息,以便测试人员能够更高效地管理和执行测试用例,并生成高质量的测试报告。
9、其他
9.1 动态更新测试用例信息
使用allure.dynamic.title
或allure.dynamic.description
在测试执行过程中动态更新测试用例的标题或描述。
import pytest
import allure@allure.title("初始标题")
def test_dynamic_update():# 执行一些测试操作allure.dynamic.title("更新后的标题") # 动态更新标题allure.dynamic.description("这是更新后的描述") # 动态更新描述assert True # 假设测试通过
9.2 测试附件
在测试报告中附加截图或视频等多媒体素材。
import allure
import pytest
from selenium import webdriver # 假设使用selenium进行web测试def test_with_attachment():driver = webdriver.Chrome()try:driver.get("http://example.com")# 执行一些测试操作# 截图并附加到测试报告中allure.attach.file(driver.get_screenshot_as_png(), name="测试截图", attachment_type=allure.attachment_type.PNG)assert True # 假设测试通过finally:driver.quit()