添加PyQt GUI自动化测试套件

新增5个GUI测试模块,覆盖所有主要功能:
- test_login_gui.py: 登录和密码管理测试(7个测试)
- test_stock_gui.py: 库存管理测试(4个测试)
- test_raw_material_gui.py: 原料管理测试(7个测试)
- test_garment_gui.py: 款式管理测试(2个测试)
- test_purchase_order_gui.py: 采购单生成测试(2个测试)

测试特点:
- 真实GUI交互测试(填写表单、点击按钮、搜索过滤)
- 业务逻辑验证(重复数据拒绝、空值验证、计算正确性)
- 独立测试环境(临时数据库,自动清理)
- 自动化消息框(Mock QMessageBox)

总计22个GUI测试,全部通过 ✓

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-27 16:52:30 +08:00
parent c52d360cbb
commit 8aa1a5ac91
14 changed files with 2599 additions and 0 deletions

156
test/README_GUI_TESTS.md Normal file
View File

@@ -0,0 +1,156 @@
# 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. 保持测试代码的可读性和可维护性