python+requests接口自动化框架的实现

简介: 通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。

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

在现代软件开发中,接口自动化测试是保证应用稳定性和功能性的重要环节。本文将详细介绍如何使用Python和Requests库构建一个接口自动化测试框架。

目录

  1. 框架概述
  2. 环境准备
  3. 项目结构
  4. 基础组件
  5. 测试用例编写
  6. 运行与报告
  7. 实践应用

框架概述

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

  • 配置管理:管理测试环境、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 yaml

class 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 ConfigReader

class 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 response

    def 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 logging

def 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 logger

logger = setup_logger()
​

测试用例编写

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

tests/test_example.py

import pytest
from utils.request_handler import RequestHandler
from utils.logger import logger

request_handler = RequestHandler()

def test_get_example():
    logger.info("Starting test_get_example")
    response = request_handler.get('/example')
    assert response.status_code == 200
    assert 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 == 201
    assert response.json().get('key') == 'value'
    logger.info("Finished test_post_example")
​

运行与报告

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

main.py

import pytest

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

实践应用

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

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

分析说明表

功能模块 描述 代码示例
配置管理 管理测试环境、API基本信息等配置 ConfigReader类读取YAML文件
请求封装 封装HTTP请求,使其易于调用和维护 RequestHandler类封装GET和POST请求
日志记录 记录测试过程中的请求和响应,便于追踪和调试 使用 logging模块记录日志
测试用例编写 编写测试用例,并使用pytest管理和执行 tests目录下编写测试用例文件
运行与报告 使用pytest运行测试并生成HTML格式的测试报告 main.py中调用pytest生成报告

总结

通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
378 0
|
4月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
436 1
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
575 0
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
274 0
|
4月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
618 2
|
4月前
|
数据采集 人工智能 自然语言处理
Playwright MCP 浏览器自动化框架全面解析
Playwright MCP是微软推出的开源项目,结合Playwright与MCP协议,让AI通过结构化数据直接操作浏览器。告别传统视觉识别,实现高效、精准的网页自动化,广泛应用于测试、爬虫、办公自动化等场景,大幅提升效率与可靠性。
|
5月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
150 1
|
5月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
243 0
|
5月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
251 1

推荐镜像

更多