Requests + Pytest + Allure 实现 API 自动化测试

2024-04-16 12:58

本文主要是介绍Requests + Pytest + Allure 实现 API 自动化测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目地址:https://github.com/tomoyachen/api-test-scaffold

基于 Pytest + Requests + Allure 实现快速搭建 API 自动化测试项目的脚手架。

文章目录

  • TODO
  • 已实现
  • 目录结构
  • 用例示例
  • Allure 报告
  • 日志
  • GitLab CI

TODO

  1. 基于 GitLab CI 的 飞书、钉钉的通知
  2. 基于 pre-commit 规范提交代码风格
  3. 进一步完善 GitLab CI 过程(触发器、美化报告)

已实现

(Changes)

  1. 基本的测试用例示例
  2. 简单、易维护的分层
  3. 多套环境的配置、静态数据
  4. 接口会话信息输出
  5. 支持 Allure 报告
  6. 登录态用例示例(包含免登录策略)
  7. 经典场景用例示例(动态传参、遍历测试、tags)
  8. 支持操作 Mysql、Redis
  9. 基于 GitLab CI 的执行用例、生成 allure 报告、部署 pages
  10. 基于 GitLab CI 支持 allure 单次报告、增量报告
  11. 基于 GitLac CI 支持根据提交所影响的范围来动态执行用例

目录结构

api-test-scaffold
├─common
│      config.py # 读取配置(dev.yaml)、静态数据(dev/project_1.yaml)
│      request.py # 请求基类
│
├─config
│      dev.yaml # 环境配置(URL、数据库连接信息)
│      dev-01.yaml
│
├─fixtures
│  └─dev
│          project_1.yaml # 静态数据(用户信息、各种常量)
│
├─outputs
│  ├─report # allure 原始文件
│  └─report-html # allure 生成的 html 目录(用于部署在线报告)
│
├─request
│  └─project_1 # 项目文件夹
│      └─module_1 # 模块文件夹
│              post_method_request.py # 被测接口(维护接口基本信息、工具方法)
│              get_method_request.py 
│
├─testcase
│  └─project_1
│      └─module_1
│              post_method_test.py # 测试用例
│              get_method_test.py
│
│  .gitignore
│  conftest.py # Pytest 最先执行的文件(大量内置钩子、定义全局fixture)
│  poetry.lock
│  pyproject.toml
│  pytest.ini # Pytest 配置文件
│  .gitlab-ci.yml # GitLab CI 配置
└─ README.md

用例示例

testcase\project_1\module_1\post_method_test.py

import pytest
import allure
from request.project_1.module_1.post_method_request import PostMethodRequest@allure.epic("Project 1")
@allure.feature("Module 1")
@allure.story("Post 请求接口")
class PostMethodTest():@pytest.fixture(scope='function')def api(self):request = PostMethodRequest()yield request@allure.title("成功请求")def test_post_method(self, api):api.request()api.assertion(expect_code=200)@allure.title("id 不存在")def test_post_method_with_id_not_exists(self, api):api.data['id'] = -1api.request()api.assertion(expect_code=1001, expect_message='id 不存在')

Allure 报告

在这里插入图片描述
在这里插入图片描述

日志

2021-11-26 21:16:40    INFO    conftest.py:38    用户 zhangsan 免登录
2021-11-26 21:16:41    INFO    request.py:77    Caller: <FrameSummary file D:\chen\PycharmProjects\api-test-scaffold\testcase\project_1\module_1\classic_scene_test.py, line 44 in test_classic_scene_with_parametrize>
POST  https://httpbin.org/post
Request Headers: {'content-type': 'application/json; charset=utf-8'}
Request Body: {'id': 1, 'status': 1, 'code': 200, 'message': None}
HTTP Code: 200
Response Body: {  "json": {    "code": 200,     "id": 1,     "message": null,     "status": 1  }}

GitLab CI

在这里插入图片描述

这篇关于Requests + Pytest + Allure 实现 API 自动化测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908849

相关文章

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.