当前位置: 首页 > news >正文

Python + Requests 接口自动化框架的实现

框架概述

一个完整的接口自动化测试框架应包括以下几部分:

  • 配置管理:管理测试环境、API基本信息等配置。
  • 请求封装:封装HTTP请求,使其易于调用和维护。
  • 数据驱动:通过外部数据文件驱动测试。
  • 日志记录:记录测试过程中的请求和响应,便于追踪和调试。
  • 测试报告:生成可视化的测试报告,展示测试结果。

环境准备

在开始构建框架之前,确保你的开发环境已经安装了Python和相关依赖库。

pip install requests pytest pytest-html

项目结构

设计合理的项目结构有助于提高代码的可维护性和扩展性。推荐的项目结构如下:

api_test_framework/
├── config/
│   └── config.yaml
├── data/
│   └── test_data.json
├── logs/
│   └── test.log
├── reports/
│   └── report.html
├── tests/
│   └── test_example.py
├── utils/
│   ├── request_handler.py
│   ├── config_reader.py
│   └── logger.py
└── main.py

基础组件

配置管理

使用YAML文件管理配置,可以方便地修改测试环境和API信息。

config/config.yaml

base_url: "https://api.example.com"
timeout: 30
headers:Content-Type: "application/json"

utils/config_reader.py

import yamlclass ConfigReader:def __init__(self, config_file='config/config.yaml'):with open(config_file, 'r') as file:self.config = yaml.safe_load(file)def get(self, key, default=None):return self.config.get(key, default)

请求封装

封装Requests库的请求方法,便于后续调用和维护。

utils/request_handler.py

import requests
from utils.config_reader import ConfigReaderclass RequestHandler:def __init__(self):self.config = ConfigReader()self.base_url = self.config.get('base_url')self.headers = self.config.get('headers')self.timeout = self.config.get('timeout')def get(self, endpoint, params=None):url = f"{self.base_url}{endpoint}"response = requests.get(url, headers=self.headers, params=params, timeout=self.timeout)return responsedef post(self, endpoint, data=None):url = f"{self.base_url}{endpoint}"response = requests.post(url, headers=self.headers, json=data, timeout=self.timeout)return response

日志记录

使用Python的logging模块记录测试过程中的请求和响应。

utils/logger.py

import loggingdef setup_logger(log_file='logs/test.log'):logger = logging.getLogger()logger.setLevel(logging.DEBUG)fh = logging.FileHandler(log_file)fh.setLevel(logging.DEBUG)ch = logging.StreamHandler()ch.setLevel(logging.DEBUG)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')fh.setFormatter(formatter)ch.setFormatter(formatter)logger.addHandler(fh)logger.addHandler(ch)return loggerlogger = setup_logger()
 

测试用例编写

编写测试用例,并使用pytest进行管理和执行。

tests/test_example.py

import pytest
from utils.request_handler import RequestHandler
from utils.logger import loggerrequest_handler = RequestHandler()def test_get_example():logger.info("Starting test_get_example")response = request_handler.get('/example')assert response.status_code == 200assert response.json().get('key') == 'value'logger.info("Finished test_get_example")def test_post_example():logger.info("Starting test_post_example")payload = {"key": "value"}response = request_handler.post('/example', data=payload)assert response.status_code == 201assert response.json().get('key') == 'value'logger.info("Finished test_post_example")

运行与报告

使用pytest运行测试并生成HTML格式的测试报告。

main.py

import pytestif __name__ == "__main__":pytest.main(["-v", "--html=reports/report.html", "--self-contained-html"])

实践应用

接口自动化测试框架的应用不仅限于基本的请求和响应验证。我们可以根据实际需求扩展以下功能:

  • 数据驱动测试:使用CSV、JSON或Excel文件驱动测试用例。
  • 异常处理:处理超时、连接失败等异常情况,提高测试的健壮性。
  • 并发测试:使用多线程或异步请求实现高并发测试。
http://www.sczhlp.com/news/6490/

相关文章:

  • 数据库锁表现场排查与处理手册
  • CGCS2000 GK3degree坐标投影问题
  • 最短路径求解
  • 制造业痛点:图纸外发安全如何管控?2025最新技术方案解析
  • Qt | 四种方式实现多线程导出数据功能
  • 无法访问 Maven 3.8.1 http 仓库
  • 研发场景题
  • 漏洞挖掘-01
  • 微信扫描二维码登录的跳转重定向被浏览器阻止
  • 免费的个人网站托管-InfinityFree
  • 论保护电脑隐私的重要性
  • 详细介绍:C++高频知识点(十四)
  • Awaken Your Web 创新挑战赛
  • 基于若依框架二次开发
  • Windows报错:请求列出指定服务器上的可用功能失败问题处理
  • 模型和模型量化,模型量化后损失了什么
  • 服务器侧简单测试大模型问答实现
  • 【补题计划】 [BJOI2014] 大融合
  • [KAFKA] KAFKA消费者自动提交机制
  • 剑指offer-19、顺时针打印矩阵
  • CyberTalents蓝队奖学金CTF题解:从数字取证到网络安全的实战技巧
  • 大语言模型幻觉检测新工具与数据集
  • vue3之子组件调用父组件异步请求,完了之后再同步执行下文
  • glTF-教程/glb-教程
  • 我最喜欢的 C# 14 新特性
  • X11 使用 XSetWMNormalHints 固定窗口所在的屏幕
  • Claude Code:AI编程的深度体验与实践
  • Chrome浏览器无法查看页面跳转前的请求日志及解决办法
  • C# UI中使用async与await防止线程阻塞的一个例子
  • 【办公自动化】日常工作中如何使用Python自动化整理文件?