diff --git a/tests/test_main.py b/tests/test_main.py index bd69671..f63e10a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -7,10 +7,6 @@ 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): """ @@ -18,14 +14,25 @@ class TestMagicWordApplication(unittest.TestCase): - 初始化测试环境 - 创建测试数据 """ - # 使用MagicMock替代实际QApplication实例 + # 使用unittest.mock模拟QApplication避免Qt初始化 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() + # 模拟导入MainWindow + with patch('PyQt5.QtWidgets.QApplication'), \ + patch('PyQt5.QtWidgets.QMainWindow'), \ + patch('PyQt5.QtWidgets.QTextEdit'), \ + patch('PyQt5.QtWidgets.QAction'), \ + patch('PyQt5.QtWidgets.QFileDialog'), \ + patch('PyQt5.QtWidgets.QVBoxLayout'), \ + patch('PyQt5.QtWidgets.QWidget'), \ + patch('PyQt5.QtWidgets.QLabel'), \ + patch('PyQt5.QtWidgets.QStatusBar'), \ + patch('PyQt5.QtWidgets.QMessageBox'): + from src.main_window import MainWindow + self.window = MainWindow() def tearDown(self): """ @@ -43,12 +50,12 @@ class TestMagicWordApplication(unittest.TestCase): - 检查初始状态 """ # 验证窗口标题 - with patch.object(MainWindow, 'windowTitle', return_value='MagicWord'): + with patch.object(self.window, 'windowTitle', return_value='隐私学习软件 - 仿Word'): title = self.window.windowTitle() - self.assertEqual(title, 'MagicWord') + self.assertEqual(title, '隐私学习软件 - 仿Word') # 验证窗口不是全屏 - with patch.object(MainWindow, 'isFullScreen', return_value=False): + with patch.object(self.window, 'isFullScreen', return_value=False): fullscreen = self.window.isFullScreen() self.assertFalse(fullscreen) @@ -58,12 +65,12 @@ class TestMagicWordApplication(unittest.TestCase): - 验证文件打开、保存等功能 """ # 模拟菜单栏存在 - with patch.object(MainWindow, 'menuBar', return_value=MagicMock()): + with patch.object(self.window, 'menuBar', return_value=MagicMock()): menubar = self.window.menuBar() self.assertIsNotNone(menubar) # 模拟状态栏存在 - with patch.object(MainWindow, 'statusBar', return_value=MagicMock()): + with patch.object(self.window, 'statusBar', return_value=MagicMock()): statusbar = self.window.statusBar() self.assertIsNotNone(statusbar)