# api_test **Repository Path**: hankaizhou/api_test ## Basic Information - **Project Name**: api_test - **Description**: 基于Python和pytest的广告账户API自动化测试框架,采用数据驱动设计,集成数据库操作、日志记录及Allure报告,支持参数化测试与CI/CD无缝集成,助力高效接口测试与质量保障。 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-29 - **Last Updated**: 2026-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # API自动化测试框架 ## 项目概述 本项目是一个基于Python和pytest的API自动化测试框架,主要用于广告账户管理系统的API接口测试。框架支持数据驱动测试、参数化测试、测试报告生成、日志记录、数据库操作等功能,能够高效地进行API接口的自动化测试。 ## 项目结构 ``` api_project/ ├── .idea\ # IDE配置目录 ├── .pytest_cache\ # pytest缓存目录 ├── .venv\ # 虚拟环境目录 ├── .workflow\ # CI/CD配置目录 │ ├── branch-pipeline.yml │ ├── master-pipeline.yml │ └── pr-pipeline.yml ├── ad_account\ # 广告账户相关模块 │ ├── random_number.py │ └── update_record.py ├── config\ # 配置文件目录 │ ├── api_endpoints.py # API接口端点配置 │ ├── config.py # 项目基础配置 │ └── test_data.py # 测试数据配置 ├── downloads\ # 下载文件目录 ├── import_file\ # 导入文件目录 ├── logs\ # 日志文件目录 ├── report\ # 测试报告目录 │ ├── allure-report\ # Allure报告 │ └── allure-results\ # Allure结果文件 ├── test_data\ # 测试数据目录 │ ├── sql\ # SQL脚本 │ └── *.yaml # YAML格式测试数据 ├── tests\ # 测试用例目录 │ ├── api\ # API测试用例 │ └── ui\ # UI测试用例(预留) ├── upload_files\ # 上传文件目录 ├── utils\ # 工具类目录 │ ├── assert_util.py # 断言工具 │ ├── db_util.py # 数据库操作工具 │ ├── file_util.py # 文件操作工具 │ ├── log_util.py # 日志工具 │ ├── request_util.py # HTTP请求工具 │ └── test_data_manager.py # 测试数据管理工具 ├── AI_test.py # AI测试脚本 ├── conftest.py # pytest配置文件 ├── login_api_test_cases.json # 登录API测试用例JSON文件 ├── ps.txt # 系统配置信息文件 ├── pytest.ini # pytest主配置 ├── requirements.txt # 项目依赖 ├── run.py # 运行入口 └── token_manager.py # Token管理工具 ``` ## 环境要求 - Python 3.8+ - pip 20.0+ ## 安装步骤 1. 克隆项目到本地 ```bash git clone [仓库地址] cd api_project ``` 2. 创建虚拟环境(推荐) ```bash python -m venv .venv # Windows激活虚拟环境 .venv\Scripts\activate # Linux/Mac激活虚拟环境 source .venv/bin/activate ``` 3. 安装项目依赖 ```bash pip install -r requirements.txt ``` ## 配置说明 1. **基础配置**:修改 `config/config.py` 文件中的配置项 ```python # 基础URL BASE_URL = "https://test.doss.donson.com.cn" API_TIMEOUT = 30 API_TOKEN = "your_api_token_here" # 日志级别 LOG_LEVEL = "INFO" # 数据库配置 DB_CONFIG = { "host": "192.168.0.56", "port": 3306, "user": "doss_db_pre", "password": "your_db_password", "database": "doss_db" } # 响应时间阈值配置 SLOW_RESPONSE_THRESHOLD_MS = 3000 CRITICAL_RESPONSE_THRESHOLD_MS = 10000 # 不同类型接口的响应时间阈值 RESPONSE_TIME_THRESHOLDS = { 'query': 2000, 'export': 10000, 'import': 15000, 'report': 30000 } ``` 2. **API端点配置**:在 `config/api_endpoints.py` 中配置API接口路径 3. **测试数据**:在 `test_data/` 目录下创建YAML格式的测试数据文件 ## 使用方法 ### 运行测试 1. 运行所有测试 ```bash python run.py ``` 2. 运行指定模块测试 ```bash pytest tests/api/test_ad_change.py -v ``` 3. 运行标记的测试用例 ```bash pytest -m smoke -v ``` 4. 生成Allure报告 ```bash # 运行测试并生成Allure结果 pytest --alluredir=report/allure-results # 生成并打开Allure报告 allure serve report/allure-results ``` ### 编写测试用例 1. 在 `tests/api/` 目录下创建测试文件 2. 使用pytest的fixture机制获取测试资源 3. 使用参数化和数据驱动进行测试 示例: ```python import pytest import allure from utils.assert_util import AssertUtil from utils.log_util import logger from utils.test_data_manager import test_data_manager @allure.epic("广告账户管理") @allure.feature("账户变更") class TestAdChange: @allure.story("变更业务类型") @allure.title("校验变更业务类型时账户ID有效性") def test_ad_change_business_type(self, api_client): """测试变更业务类型接口""" # 获取测试数据 test_data = test_data_manager.get_test_data("test_ad_change_data_check.yaml", "test_cases")[0] # 发送请求 response = api_client.post("/api/ad/change/businessType", json=test_data["params"]) # 断言验证 assert_util = AssertUtil() assert_util.assert_status_code(response, test_data["expected_code"]) assert_util.assert_response_contains(response, test_data["expected_msg"]) ``` ## 测试数据管理 测试数据使用YAML格式存储,每个功能模块对应一个YAML文件,文件中包含测试用例列表。测试数据由 `TestDataManager` 类统一加载和管理。 示例YAML文件结构: ```yaml test_cases: - name: "变更归属商机账号导入成功" params: changeType: "BUSINESS" oldBusinessId: "1001" newBusinessId: "1002" expected_code: 200 expected_msg: "操作成功" - name: "变更归属商机账号导入失败" params: changeType: "BUSINESS" oldBusinessId: "1001" newBusinessId: "" expected_code: 400 expected_msg: "新商机ID不能为空" ``` ## 工具类说明 1. **request_util.py**:HTTP请求工具,封装了GET、POST等请求方法,支持文件上传下载 2. **assert_util.py**:断言工具,提供多种断言方法 3. **db_util.py**:数据库操作工具,支持查询和更新操作 4. **log_util.py**:日志工具,配置日志格式和输出 5. **test_data_manager.py**:测试数据管理工具,加载和提供测试数据 6. **file_util.py**:文件操作工具,处理文件读写等操作 ## 其他脚本说明 (暂无其他脚本说明) ## 日志系统 日志文件存储在 `logs/` 目录下,采用日期时间命名。日志包含请求信息、响应信息、断言结果等内容,便于问题定位和分析。 ## 持续集成 项目支持CI/CD,配置文件位于 `.workflow/` 目录下,包含: - branch-pipeline.yml:分支流水线 - master-pipeline.yml:主分支流水线 - pr-pipeline.yml:PR流水线 ## 注意事项 1. 运行测试前请确保已正确配置数据库连接信息 2. 确保导入文件目录包含所需的测试文件 3. 定期清理日志和报告文件,避免磁盘空间占用过大 4. 建议使用虚拟环境进行依赖管理 ## 维护者 - 团队名称:API自动化测试团队 - 联系方式:[团队邮箱或联系方式] ## 许可证 本项目采用MIT许可证。详情请查看项目中的LICENSE文件。