前言

作为软件测试工程师,利用 Python 搭建接口自动化测试框架是一个系统化的过程。
从零开始搭建一个高效、可维护的接口自动化测试框架:

1、明确框架设计目标

在开始之前,明确框架的设计目标,例如:
支持多种 HTTP 请求(GET、POST、PUT、DELETE 等)。
支持数据驱动测试(如从 Excel、CSV、JSON 文件中读取测试数据)。
支持日志记录和测试报告生成。
支持环境配置管理(如测试环境、预发布环境、生产环境)。
易于扩展和维护。

2、技术选型

选择合适的技术栈是搭建框架的关键。以下是一些常用的 Python 库和工具:
HTTP 请求库:requests(简单易用)或 httpx(支持异步)。
测试框架:unittest(Python 自带)或 pytest(功能更强大)。
数据驱动:pandas(处理 Excel/CSV)、json(处理 JSON)。
日志记录:logging
测试报告:AllureHTMLTestRunner
配置文件管理:configparserYAML
依赖管理:pipenvpoetry

3、框架目录结构

设计一个清晰的目录结构,便于管理和扩展。例如:

api_test_framework/
├── config/ # 配置文件
│ └── config.ini
├── data/ # 测试数据
│ ├── test_data.csv
│ └── test_data.json
├── logs/ # 日志文件
├── reports/ # 测试报告
├── test_cases/ # 测试用例
│ └── test_user_api.py
├── utils/ # 工具类
│ ├── http_client.py
│ ├── logger.py
│ └── data_loader.py
└── requirements.txt # 依赖库

4、核心模块实现

(1) HTTP 请求封装
创建 http_client.py,封装常用的 HTTP 请求方法:

import requests

class HttpClient:
    def __init__(self, base_url):
        self.base_url = base_url

    def get(self, endpoint, params=None, headers=None):
        url = f"{self.base_url}{endpoint}"
        response = requests.get(url, params=params, headers=headers)
        return response

    def post(self, endpoint, data=None, json=None, headers=None):
        url = f"{self.base_url}{endpoint}"
        response = requests.post(url, data=data, json=json, headers=headers)
        return response

    # 添加其他请求方法(PUT、DELETE 等)

(2) 日志记录
创建 logger.py,实现日志记录功能:

import logging
import os

def setup_logger():
    logging.basicConfig(
        level=logging.INFO,
        format="%(asctime)s - %(levelname)s - %(message)s",
        handlers=[
            logging.FileHandler("logs/api_test.log"),
            logging.StreamHandler()
        ]
    )
    return logging.getLogger()

(3) 数据加载
创建 data_loader.py,支持从文件加载测试数据:

import json
import pandas as pd

def load_json(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        return json.load(f)

def load_csv(file_path):
    return pd.read_csv(file_path).to_dict("records")

(4) 配置文件管理
使用 configparser 管理配置文件(config.ini):

[ENV]
base_url = https://api.example.com

[LOG]
level = INFO

加载配置:

import configparser

config = configparser.ConfigParser()
config.read("config/config.ini")

BASE_URL = config.get("ENV", "base_url")
LOG_LEVEL = config.get("LOG", "level")

5、编写测试用例

使用 pytest 或 unittest 编写测试用例:

import unittest
from utils.http_client import HttpClient
from utils.logger import setup_logger

logger = setup_logger()

class TestUserAPI(unittest.TestCase):
    def setUp(self):
        self.client = HttpClient(BASE_URL)

    def test_get_user(self):
        response = self.client.get("/users/1")
        self.assertEqual(response.status_code, 200)
        logger.info("GET /users/1 测试通过")

    def test_create_user(self):
        data = {"name": "John", "email": "john@example.com"}
        response = self.client.post("/users", json=data)
        self.assertEqual(response.status_code, 201)
        logger.info("POST /users 测试通过")

6、生成测试报告

使用 Allure 或 HTMLTestRunner 生成测试报告:

import unittest
from HTMLTestRunner import HTMLTestRunner

if __name__ == "__main__":
    suite = unittest.defaultTestLoader.discover("test_cases")
    with open("reports/report.html", "wb") as f:
        runner = HTMLTestRunner(
            stream=f,
            title="API 测试报告",
            description="测试结果"
        )
        runner.run(suite)

7、运行测试

通过命令行运行测试:

pytest test_cases/ -v --html=reports/report.html

8、持续集成(CI)

将框架集成到 CI/CD 工具(如 Jenkins、GitLab CI)中,实现自动化测试:
在 CI 配置文件中添加测试命令。
每次代码提交后自动运行测试并生成报告。

9、框架优化与扩展

参数化测试:使用 pytest.mark.parametrize 实现参数化测试。
环境切换:通过配置文件动态切换测试环境。
Mock 测试:使用 unittest.mock 模拟外部依赖。
并发测试:使用 pytest-xdist 实现并发测试。

2024最新接口测试从入门到精通项目实战(全套接口测试教程)

下面是我整理的2025年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生没有跨不过的山,只有不愿迈的脚。当你觉得撑不住时,正是突破的前兆。那些咬牙坚持的日子,终将成为你最骄傲的勋章。记住:黑夜再长,黎明终会到来;脚步再慢,坚持就能抵达!

别让"不可能"三个字困住你的人生。每个伟大的成就,都始于一个勇敢的开始。今天的汗水是明天的果实,现在的努力是未来的底气。你比自己想象的更强大,世界终将为追梦者让路!

Logo

一站式 AI 云服务平台

更多推荐