1. 项目概述:用Django打造轻量级接口测试工具
作为测试开发工程师,我经常需要快速验证各种API接口的可用性。虽然市面上有Postman等成熟工具,但对于需要深度定制或批量测试的场景,自己动手写一个轻量级测试工具往往更高效。这个基于Python+Django的接口测试工具,特别适合刚入行的测试同学练手,既能学习Web开发基础,又能掌握接口测试核心逻辑。
整个项目采用前后端不分离的经典MVC模式,后端用Django处理请求,前端用原生HTML表单提交数据。技术栈选择上刻意保持简洁:
- Python 3.6+(兼容性最好的版本)
- Django 3.2 LTS(长期支持版更稳定)
- Requests库(接口请求的行业标准)
- SQLite(内置数据库无需额外配置)
提示:即使完全没有Django基础,跟着本文一步步操作也能完成项目。所有代码都采用最直白的实现方式,避免过度设计。
2. 环境准备与项目创建
2.1 开发环境配置
首先确保系统已安装Python 3.6+,通过命令行验证:
bash复制python --version
# 应显示类似 Python 3.8.5 的版本信息
安装虚拟环境(强烈推荐):
bash复制python -m venv venv
# Windows激活
venv\Scripts\activate
# Mac/Linux激活
source venv/bin/activate
安装依赖库:
bash复制pip install django requests
2.2 创建Django项目
执行以下命令创建项目骨架:
bash复制django-admin startproject apitesttool
cd apitesttool
python manage.py startapp tester
项目结构说明:
code复制apitesttool/
├── apitesttool/ # 项目配置目录
│ ├── __init__.py
│ ├── settings.py # 核心配置文件
│ ├── urls.py # 主路由文件
│ └── wsgi.py
├── tester/ # 应用目录
│ ├── migrations/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── manage.py # 项目管理脚本
2.3 基础配置调整
修改settings.py关键配置:
python复制INSTALLED_APPS = [
...
'tester', # 新增应用
]
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 添加模板目录
...
},
]
创建模板目录:
bash复制mkdir -p tester/templates/tester
3. 核心功能实现
3.1 接口测试类封装
在tester目录下新建api_client.py,实现核心请求逻辑:
python复制import requests
from requests.exceptions import RequestException
class APIClient:
"""封装HTTP请求的通用类"""
@staticmethod
def send_request(method, url, params=None, data=None, headers=None):
"""
发送HTTP请求
:param method: 请求方法 GET/POST
:param url: 接口地址
:param params: URL参数(dict)
:param data: 请求体数据(dict)
:param headers: 请求头(dict)
:return: Response对象
"""
try:
if method.upper() == 'GET':
response = requests.get(
url,
params=params,
headers=headers or {}
)
elif method.upper() == 'POST':
response = requests.post(
url,
json=data,
headers=headers or {}
)
else:
raise ValueError(f"不支持的请求方法: {method}")
response.raise_for_status() # 检查HTTP错误
return response
except RequestException as e:
print(f"请求失败: {str(
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容