# PY_API_AUTO_TEST **Repository Path**: taikun928/py_api_auto_test ## Basic Information - **Project Name**: PY_API_AUTO_TEST - **Description**: python 接口自动化框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-11-11 - **Last Updated**: 2026-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # py_api_auto_test ## 项目简介 `py_api_auto_test` 是一个基于 Python 3.6+ 的电商系统 API 自动化测试框架。该项目采用模块化设计,主要用于测试 **mtxshop**(电商平台系统)的接口功能,覆盖了买家端与卖家端的登录、购物车、订单、商品、交易、退货等全流程业务场景。 框架集成了 **Pytest**、**Requests**、**Allure Report**,并支持多环境配置(测试/预发布/生产)、数据驱动(Excel/YAML)以及加密/解密处理,适用于持续集成(CI/CD)环境下的接口自动化测试。 ## 主要特性 1. **角色分离**:明确区分买家端 (`api/buyer`) 和卖家端 (`api/seller`) 接口,互不干扰。 2. **多环境适配**:通过 `config/` 目录下的环境配置文件(`env_test.yml`, `env_prepro.yml`, `env_pro.yml`)快速切换测试环境。 3. **数据驱动**: - 支持 YAML 配置参数化。 - 支持 Excel 数据文件 (`data/mtxshop_data.xlsx`) 管理测试用例数据。 4. **安全测试支持**:内置 MD5、AES、RSA 等加解密工具类 (`common/encry_decry.py`),满足需要签名或密文传输的接口测试需求。 5. **自动初始化**:利用 `conftest.py` 自动管理 Token(登录态)、数据库连接 (`DBUtil`) 和 Redis 连接 (`RedisUtil`)。 6. **详细报告**:测试完成后生成直观的 Allure HTML 报告。 ## 项目结构 ```text py_api_auto_test/ ├── api/ # 核心:接口定义层 (Interface Definition) │ ├── base_api.py # 基础 API 父类 (BuyerBaseApi, SellerBaseApi) │ ├── buyer/ # 买家端接口模块 │ │ ├── cart_api.py # 购物车 (立即购买、加入购物车) │ │ ├── login.py # 买家登录 │ │ ├── order_api.py # 订单查询、退货、评价 │ │ └── trade_api.py # 创建交易 │ └── seller/ # 卖家端接口模块 │ ├── goods_api.py # 商品新增、修改 │ ├── login_api.py # 卖家登录 │ └── order_api.py # 订单发货、支付 ├── common/ # 公共组件层 (Common Utilities) │ ├── client.py # HTTP 请求封装类 (RequestsClient) │ ├── db_util.py # MySQL 数据库操作工具 (DBUtil) │ ├── encry_decry.py # 加密解密工具 (MD5, AES, RSA) │ ├── file_load.py # YAML/Excel 文件读取工具 │ ├── logger.py # 日志配置工具 │ └── redis_util.py # Redis 缓存操作工具 (RedisUtil) ├── config/ # 配置文件目录 (Configuration) │ ├── common.yml # 通用配置 (如 AES Key, 基础 URL 等) │ ├── db.yml # 数据库连接配置 │ ├── env_test.yml # 测试环境配置 │ ├── env_prepro.yml # 预发布环境配置 │ └── env_pro.yml # 生产环境配置 ├── conftest.py # Pytest 全局Fixture (自动处理 Token, DB, Redis 连接) ├── data/ # 测试数据 (Test Data) │ └── mtxshop_data.xlsx # 电商业务测试数据表 ├── logs/ # 日志输出目录 ├── report/ # 测试报告目录 (Allure Report) ├── testcases/ # 测试用例层 (Test Cases) │ ├── test_cart_apis.py # 购物车相关测试 │ ├── test_order_process_apis.py # 完整订单流程测试 │ ├── test_return_goods_api.py # 退货流程测试 │ └── test_trade_apis.py # 交易流程测试 ├── requirements.txt # Python 依赖包 └── pytest.ini # Pytest 配置 ``` ## 快速开始 ### 1. 环境准备 确保本地已安装 Python 3.6 或更高版本。 ### 2. 安装依赖 在项目根目录下执行: ```bash pip install -r requirements.txt ``` ### 3. 配置环境 根据测试需求修改 `config/` 目录下的配置文件: - 切换环境:修改 `setting.py` 或环境变量以加载 `env_test.yml`、`env_prepro.yml` 或 `env_pro.yml`。 - 配置数据库:修改 `db.yml` 和 `common.yml` 中的数据库连接信息。 - 配置 Redis:修改 `redis.yml`。 ### 4. 运行测试 执行所有测试用例: ```bash pytest ``` 执行特定测试文件: ```bash pytest testcases/test_trade_apis.py ``` ### 5. 查看报告 测试执行完成后,会在 `report/html/` 目录生成 HTML 报告,使用浏览器打开 `index.html` 即可查看详细的测试结果。 ## 核心模块说明 ### Fixture 机制 (`conftest.py`) 项目利用 Pytest 的 Fixture 实现了高度的自动化: - **Token 管理**:`get_buyer_token` 和 `get_seller_token` Fixture 会在测试会话开始时自动调用登录接口,将获取到的 `access_token` 注入到 `BuyerBaseApi` 和 `SellerBaseApi` 中,后续接口无需手动传参。 - **连接管理**:`db_con` 和 `redis_con` Fixture 负责管理数据库和 Redis 的连接与断开。 ### HTTP 客户端 (`common/client.py`) `RequestsClient` 类封装了 `requests` 库,不仅负责发起 HTTP 请求,还处理了 Token 的自动注入(根据请求的 BaseApi 子类判断)以及响应的提取(`extract_resp`)和密文解密(`decry_data`)。 ### 加密工具 (`common/encry_decry.py`) 针对接口签名或敏感数据场景: - **MD5**: 用于生成签名字符串。 - **AES**: 用于对称加密请求体或解密响应数据。 - **RSA**: 用于非对称加密或签名验证。 这些工具类通常在 `BaseApi` 的子类或 `conftest.py` 中被调用。