You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Curriculum_Design/tests/test_main.py

71 lines
2.2 KiB

# tests/test_main.py
import sys
import os
import unittest
from unittest.mock import patch, MagicMock
# 添加src目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
# 使用unittest.mock模拟QApplication避免Qt初始化
with patch('PyQt5.QtWidgets.QApplication'):
from src.main_window import MainWindow
class TestMagicWordApplication(unittest.TestCase):
def setUp(self):
"""
测试前准备
- 初始化测试环境
- 创建测试数据
"""
# 使用MagicMock替代实际QApplication实例
self.app_patcher = patch('PyQt5.QtWidgets.QApplication')
self.mock_app = self.app_patcher.start()
self.mock_app_instance = MagicMock()
self.mock_app.return_value = self.mock_app_instance
# 创建MainWindow实例
self.window = MainWindow()
def tearDown(self):
"""
测试后清理
- 清理测试数据
- 恢复环境状态
"""
# 停止mock
self.app_patcher.stop()
def test_application_startup(self):
"""
测试应用启动
- 验证应用能够正常启动
- 检查初始状态
"""
# 验证窗口标题
with patch.object(MainWindow, 'windowTitle', return_value='MagicWord'):
title = self.window.windowTitle()
self.assertEqual(title, 'MagicWord')
# 验证窗口不是全屏
with patch.object(MainWindow, 'isFullScreen', return_value=False):
fullscreen = self.window.isFullScreen()
self.assertFalse(fullscreen)
def test_file_operations(self):
"""
测试文件操作
- 验证文件打开、保存等功能
"""
# 模拟菜单栏存在
with patch.object(MainWindow, 'menuBar', return_value=MagicMock()):
menubar = self.window.menuBar()
self.assertIsNotNone(menubar)
# 模拟状态栏存在
with patch.object(MainWindow, 'statusBar', return_value=MagicMock()):
statusbar = self.window.statusBar()
self.assertIsNotNone(statusbar)
if __name__ == '__main__':
unittest.main()