Pytest+Allure报告内容定制基础

本文详细介绍了如何利用Allure装饰器在Python测试框架中定制测试报告,包括@allure.epic, @allure.feature, @allure.story等不同级别来组织测试结构,以及@allure.title, @allure.severity等来定义用例信息。同时,展示了如何通过allure.dynamic动态定制报告内容,并提供命令行参数来执行特定级别的用例。此外,还讲解了如何通过命令行筛选执行指定故事或特征的用例。

通过【Allure装饰器】定制测试报告

@allure.epic("")用于定义被测用的项目/系统;往下级别是feature
@allure.feature("")用于定义被测的功能/需求点/模块;往下级别是story
@allure.story("")用于定义被测的用户场景用例;往下是title

以上三个级别可以按照等级排序:@allure.epic(系统级别)>@allure.feature(子系统级别)>@allure.story(业务模块)

@allure.title("")定义用例标题
@allure.severity("")定义用例严重等级-与产生的缺陷一一对应
@allure.description("")定义用例的描述
@allure.step("")定义用例的步骤
@allure.link("")定义一个链接,在测试报告中展示
@allure.issue("")关联缺陷系统内的缺陷链接
@allure.attachment()测试报告内添加附件
@allure.testcase()关联用例系统内的测试用例链接

@allure.severity("normal "):相关入参如下:

blocker 阻塞缺陷(功能未实现,无法下一步)
critical 严重缺陷(功能点缺失)
normal 一般缺陷(边界情况,格式错误)
minor 次要缺陷(界面错误与ui需求不符)
trivial 轻微缺陷(必须项无提示,或者提示不规范)

动态定制测试报告

格式:allure.dynamic.description/title/severity(入参)

案例:

    通过excel实现编辑好用例的标题、描述、等级,然后通过allure.dynamic动态的读取表格内的各个用例对应的标题、描述、等级。

命令执行指定用例

在命令参数里面,指定用例的关键字,可用“=”号也可用空格赋值,例如:

    pytest --alluredir=./report/allure --allure-severities=blocker,critical

    pytest --alluredir=./report/allure --allure-severities blocker,critical

以上两种写法执效果是一样的。

执行指定等级的用例:pytest --alluredir=./report/allure --allure-severities=blocker,critical

执行指定story的用例:pytest --alluredir=./report/allure --allure-stories="story1","story2"

执行指定feature的用例:pytest --alluredir=./report/allure --allure-features="feature1","feature2"

<think>好的,我现在需要帮助用户搭建一个使用Python、requests、pytestAllure和YAML的测试框架,并且用户希望有图解指导。首先,我需要回忆之前用户提供的引用内容,看看有没有相关的结构或步骤可以参考。 用户提到的引用中有项目结构,比如api层、common工具类、config配置、data测试数据等。这些部分都是框架的重要组成部分。我需要按照这些模块来组织回答,确保每个部分的功能清晰。 接下来,用户需要图解,但作为文本回复,无法提供图片,所以需要用文字描述结构,可能的话用代码块和目录树来展示。例如,项目结构可以用树状图表示,这样用户能更直观地理解各个目录的作用。 然后,步骤分解很重要。需要分步骤讲解如何封装请求、管理测试数据、编写测试用例、配置pytest和生成Allure报告。每个步骤需要示例代码,比如如何用requests封装HTTP请求,如何用YAML文件管理测试数据,以及如何用pytest夹具和装饰器组织测试用例。 另外,用户可能对如何运行测试并生成报告特别感兴趣,所以需要详细说明pytest的执行命令和Allure的生成命令。同时,要提到配置环境,比如安装必要的库,这可以通过requirements.txt来管理,确保用户不会遗漏依赖。 还要考虑测试框架的可扩展性和维护性,比如关键字封装和数据驱动测试,这样用户可以在现有框架上轻松添加更多测试用例。可能需要解释如何将多个接口调用封装成关键字,提高代码复用性。 最后,用户可能遇到的问题,比如环境配置错误、YAML格式不正确、Allure报告生成失败等,虽然用户没有直接提问,但在步骤中提示常见问题和解决方法会更好。但根据用户要求,问题部分需要生成相关问题,所以可能将这些放在最后作为相关问题。 需要确保所有代码示例符合Python语法,特别是缩进和导入部分。同时,YAML文件的结构要正确,比如使用键值对和列表。测试用例的编写要展示如何使用参数化装饰器来读取YAML数据。 总结一下,回答的结构应该是:项目结构图解(文字版)、步骤分解(安装依赖、封装请求、管理数据、编写用例、配置pytest、生成报告)、示例代码、常见问题提示和相关问题。需要参考用户提供的引用内容,尤其是目录结构和各层的作用,确保回答与之前的引用一致,并且详细具体,用户能一步步跟着操作。</think># Python+Requests+Pytest+Allure+YAML测试框架搭建图解教程 ## 一、框架架构图解(文字版) ``` 项目结构 ├── api/ # 接口封装层 ├── common/ # 通用工具类 ├── config/ # 配置文件 ├── data/ # YAML测试数据 ├── testcases/ # pytest测试用例 ├── conftest.py # pytest全局夹具 ├── pytest.ini # pytest配置 └── requirements.txt# 依赖库 ``` ## 二、搭建步骤详解 ### 1. 环境准备 安装依赖库: ```bash # requirements.txt内容 requests==2.28.1 pytest==7.2.0 pytest-html==3.2.0 PyYAML==6.0 allure-pytest==2.12.0 ``` ### 2. 接口封装层(api/) ```python # api/user_api.py import requests class UserAPI: def __init__(self, base_url="http://api.example.com"): self.base_url = base_url def get_user(self, user_id): """获取用户信息""" return requests.get(f"{self.base_url}/users/{user_id}") def create_user(self, data): """创建用户""" return requests.post(f"{self.base_url}/users", json=data) ``` ### 3. 测试数据管理(data/user.yaml) ```yaml test_get_user: - case_id: TC001 user_id: 123 expected_code: 200 test_create_user: - case_id: TC002 data: name: "测试用户" email: "test@example.com" expected_code: 201 ``` ### 4. 测试用例编写(testcases/test_user.py) ```python import pytest import allure from api.user_api import UserAPI @allure.feature("用户管理") class TestUser: @pytest.mark.parametrize("case_data", yaml.safe_load(open("data/user.yaml"))) @allure.title("测试用户查询 - {case_data[case_id]}") def test_get_user(self, case_data): response = UserAPI().get_user(case_data["user_id"]) assert response.status_code == case_data["expected_code"] ``` ### 5. pytest配置(pytest.ini) ```ini [pytest] addopts = -v -s --alluredir=./results testpaths = testcases python_files = test_*.py ``` ### 6. Allure报告生成 ```bash # 生成测试结果 pytest # 生成可视化报告 allure serve results ``` ## 三、关键技术点说明 1. **数据驱动测试**:通过YAML文件管理测试数据,实现测试逻辑与数据分离[^5] 2. **请求封装**:将HTTP请求封装为Python类方法,提高代码复用性[^2] 3. **夹具管理**:使用`conftest.py`管理全局夹具,如token获取、数据库连接等 4. **报告定制**:通过Allure添加`@allure.step`实现操作步骤可视化追踪[^3]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miss糖豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值