# Barcode-Automation-Platform **Repository Path**: Momo_YXD/Label-Relation ## Basic Information - **Project Name**: Barcode-Automation-Platform - **Description**: 基于个人学习情况编写的UI自动化测试框架实践,包括UI自动化和接口自动化。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/Momo_YXD/Label-Relation - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-30 - **Last Updated**: 2026-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Allure, pytest, pywinauto ## README # 条码关联系统测试平台 > 条码关联系统的综合测试平台,集成API测试和UI自动化测试,基于 Python + PyQt6 + Pywinauto + pytest + Allure,支持图形化界面操作和自动化回归测试。 ## 1. 项目介绍 该项目是 **条码关联系统** 的综合测试平台,核心技术栈是 Python + PyQt6 + Pywinauto + pytest + allure,覆盖了API接口测试和UI自动化测试两大领域。平台提供了直观的图形化界面,支持测试用例选择、执行、日志查看和导出等功能,能够快速完成系统的功能验证和回归测试,显著提高测试效率。 ## 2. 功能介绍 ### 2.1 测试功能 - API接口测试:覆盖条码关联系统的所有核心API接口 - 关联工位管理 - 条码绑定数据上传 - 条码关系查询 - 条码解绑 - 数据追溯 - 关联数据统计 - UI自动化测试:模拟用户操作的UI自动化测试 - 生产信息设置 - 成品条码与半成品条码绑定 - PCM条码与半成品条码绑定 - 条码绑定关系查询 - 条码解绑操作 - 异常输入校验(如重复绑定、无效条码等) - 多工位、多项目号场景支持 - 冒烟测试 ### 2.2 测试平台功能 - 图形化测试运行器界面 - 测试用例分类筛选(API测试/UI测试/所有测试) - 灵活的测试用例选择(单个/多个/全部) - 可配置的清除历史结果选项(复选框形式) - 统一输出级别(简洁输出,显示每个测试用例结果) - 实时测试进度显示 - 测试日志实时查看 - 日志文件导出功能 - 测试过程可中断(停止测试按钮) - 支持Allure测试报告生成 ## 3. 技术栈 | 类别 | 工具/库 | |--------|--------------------------------------------------------| | 编程语言 | Python | | 测试框架 | pytest | | UI操作工具 | pywinauto | | 界面开发 | PyQt6 | | HTTP客户端 | http_client(自封装) | | 工具库 | python_tools(自封装) | | 断言封装 | 自定义"BindAssertion","QueryAssertion","UnbindAssertion"等 | | 配置管理 | config/settings.py, config/endpoints.py | | 日志管理 | tools/logger.py | | 报告生成 | Allure | | 代码规范 | Ruff | ### 3.1 自封装库说明 项目使用了两个自封装的Python库,提供了核心功能支持: 1. **python_tools** - 一个实用的Python工具库,提供日志管理、截图捕获、文件清理、测试数据加载和Allure报告增强等功能 - 尤其适用于自动化测试和脚本开发 - Gitee地址:https://gitee.com/Momo_YXD/python_tools 2. **http_client** - 轻量级通用HTTP客户端,适用于API自动化测试 - 支持GET/POST/PUT/DELETE等常用HTTP方法 - 支持自动重试机制(应对网络抖动场景) - 简化与RESTful API的交互 - Gitee地址:https://gitee.com/Momo_YXD/http_client ## 3.2 项目结构 项目采用模块化架构设计,代码结构清晰,便于维护和扩展: ``` ├── api/ # API测试接口层 │ ├── __init__.py │ ├── rest/ # RESTful API客户端 │ │ ├── __init__.py │ │ ├── base_api.py # API基类 │ │ └── relate_station.py # 具体API接口实现 │ ├── *.py # UI自动化测试具体操作实现 │ └── *assertion_api.py # UI操作断言封装 ├── config/ # 配置文件目录 │ ├── __init__.py │ ├── test_data/ # API接口测试数据配置 │ ├── endpoints.py # API接口地址配置 │ └── settings.py # 项目全局配置 ├── package/ # UI测试业务封装 │ ├── __init__.py │ ├── bind_and_assert.py # 绑定操作与断言 │ ├── query_and_assert.py # 查询操作与断言 │ └── *.py # 其他业务操作封装 ├── test/ # 测试用例目录 │ ├── __init__.py │ ├── api/ # API测试用例 │ │ ├── __init__.py │ │ ├── test_*.py # 具体API测试用例 │ │ └── workflows/ # API测试工作流 │ └── ui/ # UI自动化测试用例 │ ├── __init__.py │ ├── conftest.py # UI测试配置 │ └── test_*.py # 具体UI测试用例 ├── tools/ # 工具类目录 │ ├── __init__.py │ ├── app_manager.py # 应用程序管理 │ ├── logger.py # 日志管理 │ └── popup_handler.py # 弹窗处理 ├── ui_components/ # UI组件目录 │ ├── __init__.py # 模块初始化文件 │ ├── test_runner_ui.py # 测试运行器主界面(集成模块) │ ├── thread_runner.py # 测试执行线程模块 │ ├── test_manager.py # 测试用例管理模块 │ ├── test_executor.py # 测试执行控制模块 │ ├── report_generator.py # 报告生成模块 │ └── log_exporter.py # 日志导出模块 ├── main.py # 项目入口文件 ├── requirements.txt # 项目依赖 ├── test_cases_template.yaml # 测试数据模板 ├── http_client-1.1.1-py3-none-any.whl # http_client库,用于API测试 ├── python_tools-0.3.0-py3-none-any.whl # python_tools库,用于测试工具 └── README.md # 项目说明文档 ``` **目录说明:** - `api/`:API测试相关代码,包括接口定义、客户端实现和断言封装 - `config/`:项目配置文件,集中管理API地址、测试环境等配置项 - `package/`:UI测试的业务逻辑封装,将复杂操作封装为简单接口 - `test/`:测试用例目录,按API测试和UI测试分类管理 - `tools/`:通用工具类,提供日志、应用管理等基础功能 - `ui_components/`:图形化界面组件,实现测试运行器的UI功能,已模块化拆分 - `test_runner_ui.py`:主界面模块,负责UI元素初始化和模块整合 - `thread_runner.py`:测试执行线程模块,负责启动和监控测试进程 - `test_manager.py`:测试用例管理模块,负责加载和筛选测试用例 - `test_executor.py`:测试执行控制模块,负责测试流程控制 - `report_generator.py`:报告生成模块,负责Allure报告生成 - `log_exporter.py`:日志导出模块,负责日志文件导出 - `main.py`:项目入口,启动图形化测试运行器 ## 4. 环境准备 ### 4.1 前置条件 - Python 3.8+ 环境,推荐3.10以上版本,需确保已配置环境变量 - Windows 10/11 操作系统(Pywinauto主要支持Windows平台) - 目标测试软件 条码关联系统上位机(可在config/settings.py中配置exe_path参数) ### 4.2 依赖库安装 #### 安装核心依赖 推荐使用国内镜像源进行下载,执行以下命令: ```shell pip install -r requirements.txt --index-url https://mirrors.aliyun.com/pypi/simple/ ``` 如果需要手动安装主要依赖: ```shell pip install pywinauto pytest allure-pytest PyQt6 --index-url https://mirrors.aliyun.com/pypi/simple/ ``` ### 4.3 Allure 报告工具安装 Allure 是一个开源的测试报告工具,用于生成美观的测试结果报告。 #### 步骤1:下载Allure - 官方下载地址:https://docs.qameta.io/allure/#_download (选择最新版本的 allure--zip.zip) #### 步骤2:安装与配置 1. 将下载的 zip 包解压到本地目录(如 D:\tools\allure-2.24.0) 2. 配置环境变量: - 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」 - 在「系统变量」中找到 Path,点击「编辑」→「新建」,添加 Allure 的 bin 目录路径(如 D:\tools\allure-2.24.0\bin) #### 步骤3:环境验证 运行以下命令,查看是否安装成功: ```shell # 检查 Python 版本 python --version # 检查 pytest 版本 pytest --version # 检查 Pywinauto 版本 pip show pywinauto # 检查 PyQt6 版本 pip show PyQt6 # 检查 Allure 版本 allure --version ``` ## 5. 运行测试 ### 5.1 使用图形化测试运行器 启动测试平台界面: ```shell python main.py ``` 使用步骤: 1. 选择测试类型(API测试/UI测试/所有测试) 2. 选择输出级别(简洁/详细/调试) 3. 在左侧列表中选择要执行的测试用例(可多选) 4. 点击「执行选中测试」或「执行全部测试」 5. 在右侧查看实时测试进度和日志 6. 如需中断测试,点击「停止测试」按钮 7. 测试完成后,可点击「导出日志文件」保存测试日志 ### 5.2 命令行运行测试 #### 基本命令示例 ```shell # 运行冒烟测试 pytest test/ui/test_01_smoke.py -v # 运行所有API测试 pytest test/api/ -v # 运行所有UI测试 pytest test/ui/ -v # 运行所有测试 pytest test/ -v ``` #### 使用Allure生成可视化报告 运行测试并生成Allure报告数据: ```shell pytest test/ --alluredir=allure-results ``` 查看Allure报告: ```shell allure serve allure-results ``` 生成静态报告: ```shell allure generate allure-results --single-file -o allure-report ``` ### 5.3 配置文件与测试数据 #### 配置文件 主要配置文件位于 `config/` 目录: - `settings.py`:包含上位机路径、测试配置等 - `endpoints.py`:包含API测试的接口地址配置 可根据实际测试环境修改这些配置文件。 #### 测试数据管理 API接口测试采用YAML数据驱动方式管理测试数据: - **数据目录设计**:测试数据应存放在 `config/data/` 目录下 - **模板文件**:项目提供了 `test_data_template.yaml` 作为测试数据模板 - **数据格式**:所有测试数据必须按照模板格式编写,以确保测试框架能够正确加载和使用 - **隐私说明**:由于测试数据涉及企业生产信息,实际测试数据和 `config/data/` 目录不会包含在开源项目中 **模板文件结构说明**: - 必须包含顶层字段 `test_cases` - 每个测试用例包含基本信息(名称、描述、优先级、状态等) - 支持多种测试类型:基本功能测试、参数化测试、API测试、UI测试、异常处理测试等 - 支持嵌套结构:步骤、参数、请求头、预期响应等 在实际使用时,需要根据模板创建符合项目需求的测试数据文件,并创建 `config/data/` 目录放置这些文件。 ### 5.4 常用命令参数说明 | 参数 | 描述 | |-----------------------------|----------------------------------------------------------------| | -v | 显示详细日志 | | --alluredir=allure-results | 指定测试结果保存目录,默认为当前目录下的 allure-results 文件夹 | | allure serve allure-results | 启动本地报告服务,默认端口8080,访问 http://localhost:8080 查看报告 | | -k "关键词" | 运行指定关键词的测试用例(如 -k "invalid_key",表示运行包含 "invalid_key" 关键字的测试用例) | | | -m "标记" | 运行指定标记的测试用例(如 -m "smoke",表示运行标记为 "smoke" 的测试用例) | ## 6. 配置管理 - 测试数据:采用YAML数据驱动方式,模板见 `test_data_template.yaml` - 应用路径:通过 `config/settings.py` 中的配置项设置被测程序路径 - API接口:通过 `config/endpoints.py` 配置API接口地址 - 日志级别:可通过 `tools/logger.py` 模块调整 ## 7. 许可证(License) 本项目采用 **MIT 许可证**,允许自由使用、修改、分发和商用,详情请见 [LICENSE](LICENSE) 文件。