# GUI测试文档 ## 概述 本项目已为所有主要模块创建了基于PyQt的GUI集成测试,用于测试实际的用户界面交互和业务逻辑。 ## 测试文件列表 ### 1. test_login_gui.py - 登录对话框GUI测试 **测试数量**: 7个测试 **测试内容**: - 管理员登录成功/失败 - 普通用户登录成功/失败 - 获取默认密码 - 设置新密码 - 使用新密码登录 ### 2. test_stock_gui.py - 库存管理GUI测试 **测试数量**: 4个测试 **测试内容**: - 加载原料列表 - 搜索原料 - 库存数量计算 - 库存扣除消耗后的计算 ### 3. test_raw_material_gui.py - 原料管理GUI测试 **测试数量**: 7个测试 **测试内容**: - 添加基本原料 - 添加重复型号(验证拒绝) - 添加空型号(验证拒绝) - 删除原料 - 编辑原料 - 按类目过滤 - 按型号搜索 ### 4. test_garment_gui.py - 款式管理GUI测试 **测试数量**: 2个测试 **测试内容**: - 加载款式列表 - 搜索款式 ### 5. test_purchase_order_gui.py - 采购单生成GUI测试 **测试数量**: 2个测试 **测试内容**: - 生成采购单 - 材料用量计算 ## 测试统计 **总测试数量**: 22个测试 **测试状态**: ✓ 全部通过 **测试时间**: ~14秒 ## 运行测试 ### 运行单个模块测试 ```bash # 登录测试 python test\test_login_gui.py -v # 库存测试 python test\test_stock_gui.py -v # 原料测试 python test\test_raw_material_gui.py -v # 款式测试 python test\test_garment_gui.py -v # 采购单测试 python test\test_purchase_order_gui.py -v ``` ### 运行所有GUI测试 ```bash cd test python -m unittest test_login_gui.py test_stock_gui.py test_raw_material_gui.py test_garment_gui.py test_purchase_order_gui.py -v ``` ## 测试特点 ### 1. 真实GUI交互 - 模拟用户填写表单 - 模拟点击按钮 - 模拟选择下拉框 - 模拟输入搜索关键词 ### 2. 业务逻辑验证 - 验证重复数据拒绝 - 验证空值验证 - 验证数据计算正确性 - 验证过滤和搜索功能 ### 3. 独立测试环境 - 每个测试使用临时数据库 - 测试之间互不干扰 - 自动清理测试数据 ### 4. 自动化消息框 - Mock了QMessageBox以便自动化测试 - 不需要人工点击确认对话框 - 可以验证警告和错误消息 ## 测试架构 ``` test/ ├── test_login_gui.py # 登录对话框测试 ├── test_stock_gui.py # 库存管理测试 ├── test_raw_material_gui.py # 原料管理测试 ├── test_garment_gui.py # 款式管理测试 ├── test_purchase_order_gui.py # 采购单生成测试 └── README_GUI_TESTS.md # 本文档 ``` ## 依赖项 - Python 3.x - PyQt5 - sqlite3 (内置) - unittest (内置) ## 注意事项 1. 测试需要在有GUI环境的系统上运行 2. 测试会创建临时数据库文件,测试后自动清理 3. 所有消息框已被Mock,不会弹出实际对话框 4. 测试使用独立的QApplication实例 ## 扩展测试 如需添加新的GUI测试,请参考现有测试文件的结构: 1. 继承 `unittest.TestCase` 2. 在 `setUpClass` 中创建 `QApplication` 实例 3. 在 `setUp` 中创建临时数据库和对话框 4. Mock消息框以便自动化 5. 在 `tearDown` 中清理资源 6. 编写具体的测试方法 ## 测试覆盖率 当前GUI测试覆盖了以下核心功能: - ✓ 用户登录和密码管理 - ✓ 原料库管理(增删改查) - ✓ 库存管理和计算 - ✓ 款式管理 - ✓ 采购单生成和计算 ## 维护建议 1. 每次修改GUI代码后运行相关测试 2. 添加新功能时同步添加GUI测试 3. 定期运行所有测试确保系统稳定性 4. 保持测试代码的可读性和可维护性