使用Allure框架创建个性化测试报告的步骤

前言

优雅展示:使用Allure和Pytest创建漂亮测试报告这篇文章中,我们介绍了Allure的基本用法,文末提到定制化报告,为啥需要定制呢?有时候,我们需要更加详细的信息,使得报告更加容易理解。

定制详细步骤

allure.step是Allure框架提供的一个注解,用于将测试用例分为多个步骤并记录每个步骤的执行结果。

使用allure.step可以帮助我们更细致地记录测试用例的执行情况,方便排查问题和定位错误。看一个示例:

scss 复制代码
class TestStudentController(TestCase):
​
    @pytest.mark.student
    @pytest.mark.parametrize("feedback, tag", [
        pytest.param(TestDataGenerator.text_(max_nb_chars=200), random.choice(['教学问题', '使用问题', '服务问题', '其他问题']))
    ])
    def test_feedback(self, headers, db_connection, feedback, tag):
        with allure.step("发送API请求"):
            ......
        with allure.step("验证API响应"):
            ......

在上述代码中,我们使用了allure.step将测试用例分为了两个个步骤,并为每个步骤添加了一个描述。当测试用例运行时,Allure会记录每个步骤的执行结果,并在测试报告中展示出来。

除了添加描述外,我们还可以使用allure.attach方法将一些额外的信息添加到测试报告中。例如,以下代码演示了如何将测试用例的请求和响应信息添加到测试报告中:

scss 复制代码
class TestStudentController(TestCase):
​
    @pytest.mark.student
    @pytest.mark.parametrize("feedback, tag", [
        pytest.param(TestDataGenerator.text_(max_nb_chars=200), random.choice(['教学问题', '使用问题', '服务问题', '其他问题']))
    ])
    def test_feedback(self, headers, db_connection, feedback, tag):
        with allure.step("发送API请求"):
            ......
            allure.attach("请求数据", feedback)
        with allure.step("验证API响应"):
            allure.attach("响应数据", self.response)
            ......
​

在上述代码中,我们使用了allure.attach方法将请求和响应信息以文本形式添加到了测试报告中。这样可以方便我们在测试报告中查看每个测试用例的请求和响应情况,有助于排查问题和定位错误。

定制内容描述

@allure.description是一个装饰器,用于在测试报告中为测试方法添加描述信息。你可以在测试方法上方使用@allure.description装饰器,并传入相应的描述文本作为参数。

以下是一个示例:

python 复制代码
import allure
​
@allure.description("这是一个示例测试方法")
def test_example():
    # 测试代码

在上述示例中,我们使用@allure.description装饰器为test_example测试方法添加了描述信息。当测试报告生成时,该描述信息将显示在测试方法的部分下方。

动态描述,替换开始时的描述

可以从测试内动态更新最初的描述allure.dynamic.description,这是非常灵活的方式,代码如下:

python 复制代码
import allure
​
@allure.description("这是一个示例测试方法")
def test_example():
    allure.dynamic.description('替换后的描述')
    # 测试代码

定制测试标题

@allure.title是一个装饰器,用于在测试报告中为测试方法添加标题。你可以在测试方法上方使用@allure.title装饰器,并传入相应的标题文本作为参数。

以下是一个示例:

python 复制代码
import allure
​
@allure.title("测试方法")
def test_example():
    # 测试代码

在上述示例中,我们使用@allure.title装饰器为test_example测试方法添加了标题。当测试报告生成时,该标题将显示在测试方法的部分上方。

链接

@allure.link将在"链接"部分提供指向所提供的网址的可单击链接

@allure.link将在"链接"部分提供指向所提供的网址的可单击链接

@allure.testcase是一个装饰器,用于在测试报告中为测试方法添加测试用例链接。在测试方法上方使用@allure.testcase装饰器,并传入相应的测试用例链接作为参数。

以下是一个示例:

python 复制代码
import allure
​
@allure.testcase("https://example.com/test_case_001")
def test_example():
    # 测试代码

在上述示例中,我们使用@allure.testcase装饰器为test_example测试方法添加了测试用例链接。当测试报告生成时,该链接将显示在测试方法的部分上方,供用户点击查看相关测试用例的详细信息。

自定义标签

@allure.feature@allure.story 是用于在测试报告中为测试方法添加特性和用户故事的装饰器。

@allure.feature 装饰器用于定义被测试功能的名称,例如:

python 复制代码
import allure
​
@allure.feature('登录功能')
def test_login():
    # 测试代码

在上述示例中,使用 @allure.feature 装饰器来标识测试方法所属的功能模块。

@allure.story 装饰器用于定义测试方法的用户故事或场景,例如:

python 复制代码
import allure
​
@allure.feature('登录功能')
@allure.story('使用有效用户名和密码登录')
def test_valid_login():
    # 测试代码

在上述示例中,我们使用了 @allure.feature@allure.story 装饰器结合起来为测试方法添加了功能和用户故事信息。

这些装饰器有助于组织测试报告,使其更具可读性和结构化,帮助用户更好地理解测试覆盖的功能和场景。

严重性标记

@allure.severity 是一个装饰器,用于为测试方法指定测试严重性级别。它可以帮助你在测试报告中标识测试的重要性和优先级。

以下是一个示例:

python 复制代码
import allure
​
@allure.severity(allure.severity_level.CRITICAL)
def test_example():
    # 测试代码

在上述示例中,我们使用 @allure.severity 装饰器为 test_example 测试方法指定了 "CRITICAL" 严重性级别。你可以根据实际情况选择不同的级别,如 "BLOCKER"、"CRITICAL"、"NORMAL"、"MINOR" 或 "TRIVIAL"。

这些级别可以帮助你确定测试的优先级和重要性,以便更好地管理和评估测试结果。测试报告中会以可视化的方式显示测试的严重性级别,让读者能够快速了解测试的重要性。

重试信息展示

对于重试,可以使用pytest重新运行失败插件。例如,如果我们有一个方法经常失败,那么可以添加参数--reruns=5,pytest启动选项中指定参数后,我们会在Retries选项卡上看到所有未成功运行此测试的尝试。

最后

掌握了定制的方法,开始定制你的个性化用例吧。

相关推荐
平头哥在等你1 小时前
Python中的正则表达式教程
python·正则表达式
Best_Me071 小时前
如何在Pycharm的终端里进入自己的环境
ide·python·pycharm
不会编程的懒洋洋1 小时前
Spring Cloud Eureka 服务注册与发现
java·笔记·后端·学习·spring·spring cloud·eureka
NiNg_1_2342 小时前
SpringSecurity入门
后端·spring·springboot·springsecurity
好看资源平台2 小时前
爬虫开发工具与环境搭建——环境配置
爬虫·python
大G哥2 小时前
python 数据类型----可变数据类型
linux·服务器·开发语言·前端·python
Lucifer三思而后行2 小时前
YashanDB YAC 入门指南与技术详解
数据库·后端
赛丽曼2 小时前
Python中的HTML
python·html
luky!3 小时前
算法--解决熄灯问题
python·算法
深度学习lover3 小时前
<项目代码>YOLOv8 番茄识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·番茄识别