Python+Pytest+Allure实战:DummyJSON接口自动化测试框架搭建全指南

大家好!今天给大家分享一个基于 Python + Pytest + Requests + Allure 构建的 DummyJSON 接口自动化测试框架。DummyJSON 提供了丰富的模拟接口,非常适合用于接口自动化测试练习和框架搭建实战。本文会从项目结构、环境准备、核心模块实现、使用方法等方面,带大家完整掌握这个测试框架的搭建与使用。

一、框架介绍与技术选型

1. 项目背景

DummyJSON 是一个提供模拟REST API的服务,包含用户、商品、购物车、认证等多个模块的接口,无需自己搭建后端服务,即可快速开展接口自动化测试练习。本框架基于该服务,实现了接口的封装、测试用例的编写、测试报告的生成等全流程自动化。

2. 技术栈选型

  • Python 3.x:作为核心开发语言,语法简洁,生态丰富,适合快速构建测试框架
  • Pytest:强大的Python测试框架,支持用例分组、参数化、夹具(fixture)等功能,简化测试用例编写
  • Requests:Python HTTP请求库,简洁易用,用于发送HTTP请求与接口交互
  • Allure:美观、详细的测试报告生成工具,支持展示用例执行结果、测试步骤、错误信息等,便于问题定位
  • PyYAML:用于解析YAML格式的配置文件和测试数据,实现数据与代码分离

二、项目结构详解

一个清晰的项目结构是框架可维护性的基础,本项目采用分层设计思想,各目录职责明确,结构如下:

三、环境准备与安装

1. 前置要求

  • Python 3.7+(推荐3.9+):确保安装并配置好环境变量
  • Java 8+:Allure报告生成依赖Java环境,需安装并配置JAVA_HOME

2. 安装步骤

步骤1:克隆仓库并进入项目目录

步骤2:安装项目依赖

项目依赖已整理在 requirements.txt 中,执行以下命令一键安装:

requirements.txt 内容参考:

四、核心配置说明

项目配置文件位于 config/config.yaml,采用YAML格式,支持多环境配置(如测试环境、生产环境),可根据需求修改:

核心配置说明:

  • env:指定当前使用的环境,修改该值即可切换环境
  • base_url:接口基础URL,统一管理,便于环境切换
  • username/password:测试认证凭证,用于登录接口获取Token 

五、核心模块实现解析

1. 公共工具类(common/)

该目录封装通用功能,避免代码重复,核心文件包括:

  • request_handler.py:封装Requests的GET、POST等请求方法,统一处理请求头、请求参数、响应结果
  • token_manager.py:管理登录Token,实现Token的获取、缓存、刷新,避免重复登录
  • config_handler.py:解析YAML配置文件,提供配置参数的统一获取方式

示例:request_handler.py 核心代码

2. API封装层(api/)

按业务模块封装接口,每个模块对应一个Python文件,对外提供清晰的调用方法,屏蔽接口细节。核心模块包括:

1)认证模块(api/auth_api.py)

(2)商品模块(api/product_api.py)

3. 测试数据(data/)

用YAML文件存储测试数据,实现数据驱动测试。示例:data/login_data.yaml

4. 测试用例(testcases/)

编写测试用例,调用API封装和测试数据,使用Pytest的夹具和断言功能。示例:testcases/test_login.py

六、框架使用方法

1. 运行测试用例

本项目提供了统一的启动脚本 run.py,执行该脚本即可完成测试用例执行、报告生成、自动打开报告全流程:

python run.py

run.py 核心代码逻辑:

也可直接使用Pytest命令运行测试(灵活指定用例、分组等):

2. 查看测试报告

方式1:通过 run.py 自动打开(执行后会自动在默认浏览器打开报告)

方式2:手动生成并打开报告(若直接用pytest运行用例)

allure serve report/allure-results # 生成临时报告并打开

# 或生成静态报告后打开

allure generate report/allure-results -o report/allure-report --clean allure open report/allure-report

Allure报告展示内容:

  • 用例执行统计:总用例数、通过数、失败数、跳过数
  • 测试用例详情:每个用例的执行步骤、请求参数、响应结果
  • 错误信息:失败用例的详细错误日志,便于定位问题
  • 图表统计:用例执行趋势、模块分布等可视化图表

七、支持的接口模块

目前框架已封装DummyJSON的核心接口模块,具体接口如下:

1. 认证模块(Auth)- api/auth_api.py

  • 登录(Login):POST /auth/login,参数:username、password

2. 商品模块(Product)- api/product_api.py

  • 获取商品列表:GET /products,支持分页(limit、skip)、排序(sortBy、order)等参数
  • 获取单个商品:GET /products/{id},参数:商品id

3. 购物车模块(Cart)- api/cart_api.py

  • 添加到购物车:POST /carts/add,参数:userId、products(列表,含id和quantity)

4. 用户模块(User)- api/user_api.py

  • 获取当前用户信息:GET /auth/me,需Authorization头(Token由TokenManager自动处理)

可根据DummyJSON的接口文档,继续扩展其他接口(如修改商品、删除购物车等)。

八、贡献指南

如果您想为该框架贡献代码,欢迎按以下步骤操作:

  1. Fork 本仓库到您的GitHub账号
  2. 创建特性分支:git checkout -b feature/amazing-feature
  3. 提交更改:git commit -m 'Add some amazing feature'(描述清晰修改内容)
  4. 推送到分支:git push origin feature/amazing-feature
  5. 在GitHub上提交Pull Request,描述您的修改内容和目的

九、总结

本框架基于 Python + Pytest + Requests + Allure 构建,实现了接口自动化测试的全流程,具有以下特点:

  • 分层设计:接口封装层、工具类层、用例层分离,结构清晰,可维护性高
  • 数据驱动:测试数据与代码分离,支持多环境配置,灵活切换测试场景
  • 报告美观:Allure报告详细直观,便于团队协作和问题定位
  • 易于扩展:新增接口或模块时,只需按规范添加API封装和用例,无需修改核心逻辑

该框架适合接口自动化测试初学者学习参考,也可直接用于基于DummyJSON的接口测试工作。如果使用过程中有任何问题,欢迎在评论区留言或提交Issue!

最后,求点赞、求收藏、求关注!后续会持续更新框架的扩展功能和自动化测试实战技巧~

Read more

Flutter 三方库 libsignal 的鸿蒙化适配指南 - 实现 Signal 协议加密通信、双大鼠(Double Ratchet)算法与前向安全性保障

Flutter 三方库 libsignal 的鸿蒙化适配指南 - 实现 Signal 协议加密通信、双大鼠(Double Ratchet)算法与前向安全性保障

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 libsignal 的鸿蒙化适配指南 - 实现 Signal 协议加密通信、双大鼠(Double Ratchet)算法与前向安全性保障 前言 在 Flutter for OpenHarmony 的高度安全通信领域,Signal 协议是目前全球公认的即时通讯加密标准。libsignal 是 Signal 协议的核心 Dart 实现。它能够为鸿蒙应用提供从身份认证到会话加密的全套解决方案,确保每一个字节的通信都具备前向安全性(Forward Secrecy)。本文将深入解析如何在鸿蒙端利用该库构建极致安全的加密通信能力。 一、原理解析 / 概念介绍 1.1 基础原理 Signal 协议的核心在于“双大鼠(Double Ratchet)”算法。它结合了 Diffie-Hellman

By Ne0inhk
Leetcode 202题 快乐数:数字世界中的奇妙旅程

Leetcode 202题 快乐数:数字世界中的奇妙旅程

Leetcode 202题 快乐数:数字世界中的奇妙旅程 * 视频地址 * 解题思路:从数字到链表的思维转换 * 链表思维的巧妙应用 * 快慢指针:龟兔赛跑的智慧 * 算法实现:C++代码解析 * 关键函数:数字变换 * 快乐数判断主逻辑 * 数学深度:数字会无限增大吗? * 快乐数的性质与统计 * 复杂度分析与优化 * 扩展思考 视频地址 因为想更好的为大佬服务,制作了同步视频,这是Bilibili的视频地址 在数学的奇妙花园里,有一种特殊的数字被赋予了"快乐"的称号。快乐数(Happy Number)就像一位在数字迷宫中寻找出口的旅人,它遵循着特定的变换规则,一步步走向最终的归宿——1。 快乐数的定义:对于一个正整数,如果将其各位数字的平方和不断进行替换,最终能够得到1,那么这个数就被称为快乐数。反之,如果陷入一个不包含1的循环,那么这个数就是不快乐的。 让我们以19为例,展开这段数字的奇妙旅程: 19 → 1²

By Ne0inhk
什么是python uv,如何在windows上安装uv,基础的用法有哪些?

什么是python uv,如何在windows上安装uv,基础的用法有哪些?

什么是Python UV? UV是由Astral公司(Rust工具Ruff的开发者)推出的高性能Python包管理工具,基于Rust编写,旨在替代传统的pip和pip-tools。其核心优势在于极快的速度(比pip快10-100倍)、轻量级设计(仅几十MB)以及现代化的依赖管理(支持pyproject.toml和uv.lock文件)。UV集成了虚拟环境管理、Python版本控制、依赖解析等功能,目标是成为类似Rust Cargo的全能工具,简化Python开发流程。 在Windows上安装UV的3种方法 使用Pipx(适合全局工具管理) 若已安装pipx: pipx install uv PowerShell脚本安装 打开PowerShell,执行: irm https://astral.sh/uv/install.ps1 |iex 通过PIP安装(推荐) 直接使用Python自带的pip安装,兼容性最佳: pip install uv 安装后,uv会被添加到系统环境变量,即使切换虚拟环境也能使用。 注意:

By Ne0inhk
Python 基本命令详解:入门必备指南

Python 基本命令详解:入门必备指南

Python 基本命令详解:入门必备指南 📌 引言 Python 是一种简单易学、功能强大的编程语言,广泛用于数据分析、Web 开发、人工智能、自动化脚本等领域。掌握 Python 的基本命令是入门的第一步。本篇文章将详细介绍 Python 基本语法、常用命令及示例代码,帮助你快速上手 Python 编程。 1. Python 环境安装与运行 ✅ 检查 Python 版本 在终端(Mac/Linux)或命令提示符(Windows)中输入: python --version 或 python3 --version 如果 Python 未安装,请前往 Python 官网 下载并安装。 ✅ 运行 Python 交互模式 输入

By Ne0inhk