# Interface_Auto **Repository Path**: pikailo/Interface_Auto ## Basic Information - **Project Name**: Interface_Auto - **Description**: 接口自动化(文件上传,yaml批量数据) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-12-20 - **Last Updated**: 2025-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Interface_Auto - Python API 自动化测试框架 --- ## 📋 项目简介 Interface_Auto 是一个基于 Python 的 API 自动化测试框架,集成了 HTTP 测试、数据库验证、文件上传、Mock 服务和 Allure 报告生成等功能。该框架采用数据驱动设计,支持多环境配置,具有良好的扩展性和可维护性。 ## ✨ 核心特性 ## 🔧 功能特性 多协议支持: HTTP/HTTPS API 测试(GET、POST、PUT、DELETE 等) 数据库集成: 支持 MySQL 数据库连接和 SQL 查询验证 文件上传测试: 完整的文件上传功能测试和验证 Mock 服务: 内置 Mock 服务,支持依赖接口模拟 数据驱动: 基于 YAML 的数据驱动测试设计 断言增强: 自定义断言工具,支持 JSONPath、响应状态码、消息内容验证 ## 🛠️ 技术特性 环境管理: 多环境配置支持(test、dev、prod 等) 重试机制: 内置重试策略,提高测试稳定性 日志系统: 完整的日志记录和追踪 Allure 报告: 生成美观的 HTML 测试报告 并发测试: 支持测试用例并发执行 ## 📁 项目结构 ``` ├── config/ # 配置文件目录 │ ├── env.yaml # 环境配置文件 │ ├── db_config.yaml # 数据库配置文件 │ └── log_config.ini # 日志配置文件 ├── core/ # 核心模块 │ ├── config_manager.py # 环境配置管理 │ ├── http_client.py # HTTP 请求封装 │ └── db_manager.py # 数据库操作封装 ├── utils/ # 工具类模块 │ ├── assert_utils.py # 断言工具 │ ├── yaml_utils.py # YAML 文件读写工具 │ ├── data_driver.py # 数据驱动工具 │ ├── jsonpath_utils.py # JSONPath 提取工具 │ └── logger.py # 日志配置工具 ├── testcases/ # 测试用例目录 │ ├── conftest.py # pytest 全局 fixture │ ├── test_demo_api.py # 示例接口测试用例 │ └── test_upload_api.py # 文件上传接口测试用例 ├── data/ # 测试数据目录 │ ├── test_api_data.yaml # 接口测试数据 │ └── test_upload.txt # 上传测试文件 ├── reports/ # 测试报告输出目录(Allure) ├── logs/ # 日志输出目录 ├── main.py # 测试执行入口 ├── pytest.ini # pytest 配置文件 └── requirements.txt # 项目依赖库 └── README.md # 项目文档 ``` ## 🚀 快速开始 ## :house: 环境要求 Python 3.10+ pip 包管理器 MySQL 数据库(可选) ## 🛠️ 安装依赖 ```bash pip install -r requirements.txt ``` ## 🧪 运行测试 运行全部测试用例: ```bash python main.py ``` 运行指定测试文件: ```bash python main.py --test_file testcases/test_demo_api.py ``` 生成 Allure 报告: ```bash python main.py --generate_report ``` 查看 Allure 报告: ```bash python main.py --open_report ``` ## 📊 报告展示 测试完成后,报告会生成在 `reports/html/` 目录下,支持浏览器打开查看详细的测试结果。 ## 📚 配置说明 - `config/env.yaml`:配置不同环境的 base URL、超时时间、请求头等 - `config/db_config.yaml`:配置数据库连接信息 - `config/log_config.ini`:配置日志输出格式与路径 ## 📝 示例测试用例 ```python import allure from utils.assert_utils import custom_assert @allure.epic("天气模块") @allure.feature("天气查询接口") class TestDemoApi: @allure.story("查询北京天气") def test_get_weather(self, api_client): response = api_client.get("/weather", params={"city": "北京"}) CustomAssert.assert_equal(response.status_code, 200) CustomAssert.assert_jsonpath(response.json(), "$.temperature", 25) ``` ## 📎 示例数据驱动 ```python from utils.data_driver import yaml_data_driver @allure.epic("登录模块") @allure.feature("登录接口") class TestLogin: @allure.story("多账号登录测试") @yaml_data_driver("data/test_api_data.yaml", "login_cases") def test_login(self, api_client, case): response = api_client.post("/login", json=case["input"]) CustomAssert.assert_equal(response.status_code, case["expected"]["code"]) ``` ## 🛠️ 扩展开发 1. 添加新的断言方法 在 utils/assert_utils.py 中添加自定义断言: ```python def assert_custom_condition(actual, expected, message="自定义条件不满足"): """自定义断言方法""" condition = your_custom_logic(actual, expected) assert condition, f"{message}: 期望 {expected}, 实际 {actual}" ``` 2. 添加新的 API 客户端方法 在 HTTP 客户端中添加新的请求方法: ```python def put_request(self, url, **kwargs): """PUT 请求方法""" return self.session.put(url, **kwargs) ``` 3. 添加新的数据驱动器 在 utils/data_driver.py 中添加新的数据源支持: ```python def excel_parametrize(file_path, sheet_name): """Excel 数据驱动器""" # 实现逻辑 pass ``` ## 📝 最佳实践 ### 1. 测试用例设计 - 使用数据驱动,将测试数据与测试逻辑分离 - 合理使用 Allure 装饰器组织测试结构 - 编写清晰的测试用例名称和描述 ### 2. 数据管理 - 敏感信息使用环境变量管理 - 测试数据独立管理,便于维护 - 使用 Mock 服务隔离依赖 ### 3. 报告分析 - 定期分析测试报告,识别问题模式 - 结合日志信息快速定位问题 - 建立测试指标监控体系 ## 🐛 常见问题 ### Q: 如何切换测试环境? A: 通过 --env 参数指定环境,或在环境变量中设置 TEST_ENV ### Q: 如何处理动态 Token? A: 在 setup 方法中获取 Token,或使用配置文件管理 ### Q: 如何添加新的断言类型? A: 在 utils/assert_utils.py 中扩展断言方法 ### Q: 如何配置数据库连接? A: 编辑 config/db_config.yml 文件,配置对应的数据库信息 ## 📄 许可证 本项目采用 MIT License,请参阅 [LICENSE](LICENSE) 文件。 🤝 贡献指南 欢迎提交 Issue 和 Pull Request 来改进这个项目! --- 如需进一步定制 README 内容,请提供具体需求。