一、引言
构建一个包含 pytest、Excel 数据管理、Allure 报告、测试结果回写到 Excel、Git 版本管理、日志记录等功能的接口自动化测试框架是一个复杂且功能强大的系统。以下是一个整体框架的搭建思路和示例代码结构,帮助你实现这些功能。
二、项目结构
├── test_framework/
│ ├── __init__.py
│ ├── config/
│ │ ├── config.py # 配置文件,如测试环境、API 基础地址等
│ ├── logs/
│ │ ├── logger.py # 日志配置和封装
│ ├── data/
│ │ ├── excel_utils.py # Excel 操作工具类
│ │ ├── test_data.xlsx # 测试数据文件
│ ├── reports/
│ │ ├── allure_reports/ # Allure 报告输出目录
│ ├── test_cases/
│ │ ├── test_api.py # 测试用例文件
│ ├── conftest.py # pytest 配置
│ ├── requirements.txt # 项目依赖
│ ├── test_runner.py # 启动脚本
└── .git/
├── .gitignore # git 忽略的文件列表
三、项目依赖
requirements.txt
pytest==7.0.0
requests==2.26.0
openpyxl==3.0.9
allure-pytest==2.9.45
pytest-html==3.1.1
安装依赖
pip install -r requirements.txt
四、代码展示
1、 Excel 操作工具类(excel_utils.py
)
可以使用 openpyxl
来操作 Excel 数据,如读取测试用例、写入测试结果等。
ExcelUtils
类用于读取和写入 Excel 文件中的测试数据和测试结果。其主要功能包括:
- 读取测试数据:从 Excel 文件中读取测试用例的数据,包括接口 URL、请求方法、请求参数、期望结果等。
- 写入测试结果:在测试完成后,将每个测试用例的结果(通过/失败)写入 Excel 文件,并记录响应时间等信息。
关键方法:
read_data()
: 读取 Excel 文件中的测试数据,并将其组织成字典列表返回。write_result()
: 根据测试用例 ID 更新测试结果(例如 Pass/Fail),并记录响应时间。get_row_by_case_id()
: 根据用例 ID 获取所在行,用于更新测试结果。
import openpyxl
class ExcelUtils:
def __init__(self, file_path):
self.file_path = file_path
self.workbook = openpyxl.load_workbook(file_path)
self.sheet = self.workbook.active
def read_data(self):
test_data = []
for row in range(2, self.sheet.max_row + 1): # Skip header row
case = {
"case_id": self.sheet.cell(row=row, column=1).value,
"api_url": self.sheet.cell(row=row, column=2).value,
"method": self.sheet.cell(row=row, column=3).value,
"params": self.sheet.cell(row=row, column=4).value,
"expected_result": self.sheet.cell(row=row, column=5).value,
"headers": self.sheet.cell(row=row, column=6).value,
"status_code": self.sheet.cell(row=row, column=7).value
}
test_data.append(case)
return test_data
def write_result(self, case_id, result, r