Pytest | allure 美化

定制化输出测试报告

Posted by Haauleon on June 20, 2023

一、定制化后的效果展示

用两张图展示效果:



二、注意别踩坑

  allure 定制化想必大部分情况都会去选择 pip install pytest-allure-adaptor 这个插件,安装完成后,运行定制化代码出现以下报错:


  安装了 pytest-allure-adaptor 插件的定制代码像这样的:


  我们会使用 allure.MASTER_HELPER 下的方法去进行定制,通过查看该插件的官网 http://pypi.org/project/pytest-allure-adaptor/,发现版本不匹配,因此抛出了异常:


解决办法:

  • pytest-allure-adaptor 版本过低不兼容当前版本的 allure,选择不安装该插件
  • 使用 allure 下的方法去进行定制



三、定制化内容

使用前,先引入 allure 模块

1
import allure


1.feature-测试用例特性(主要功能模块)

使用方法:

1
@allure.feature()


2.story-feature功能模块下的分支功能

使用方法:

1
@allure.story()


3.severity-测试用例的严重级别

Allure 中对严重级别的定义:

  • blocker 级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
  • critical 级别:临界缺陷( 功能点缺失)
  • normal 级别:普通缺陷(数值计算错误)
  • minor 级别:次要缺陷(界面错误与UI需求不符)
  • trivial 级别:轻微缺陷(必输项无提示,或者提示不规范)

使用方法:

1
2
@allure.severity(allure.severity_level.CRITICAL)
@allure.severity('critical')


4.step-测试用例的步骤

使用方法:

1
2
@allure.step()  # 只能以装饰器的形式放在类或者方法上面     
with allure.step():  # 可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含


5.attach-用于向测试报告中输入一些附加的信息,通常是一些测试数据信息

使用方法:

1
allure.attach(body, name, attachment_type, extension)
  • body - 要写入文件的原始内容
  • name - 包含文件名的字符串
  • attachment_type - 其中一个allure.attachment_type值
  • extension - 提供的将用作创建文件的扩展名


6.link/issue/testcase-链接

使用方法:

1
2
3
@allure.link()
@allure.issue()
@allure.testcase()


7.description-用例描述

使用方法:

1
2
@allure.description()  # 提供描述字符串的装饰器
@allure.description_html()  # 提供一些HTML在测试用例的描述部分


8.title-重命名测试用例

报告中的用例名称默认显示的是函数英文名,可以使用 title 重命名为中文:

1
2
3
4
5
6
7
8
    @allure.title("登录成功场景-{data}")
    @pytest.mark.parametrize("data", login_success_data, ids=ids_login_success_data)
    def test_login_success(self, data):
        """测试登录成功"""
        user = input_username(data["user"])
        pwd = input_password(data["pwd"])
        result = login(user, pwd)
        assert result == data["expected"]




相关链接:
pytest-allure美化——定制化输出测试报告