forked from p9o3yklam/Curriculum_Design
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.
78 lines
2.7 KiB
78 lines
2.7 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'))
|
|
|
|
class TestMagicWordApplication(unittest.TestCase):
|
|
def setUp(self):
|
|
"""
|
|
测试前准备
|
|
- 初始化测试环境
|
|
- 创建测试数据
|
|
"""
|
|
# 使用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
|
|
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):
|
|
"""
|
|
测试后清理
|
|
- 清理测试数据
|
|
- 恢复环境状态
|
|
"""
|
|
# 停止mock
|
|
self.app_patcher.stop()
|
|
|
|
def test_application_startup(self):
|
|
"""
|
|
测试应用启动
|
|
- 验证应用能够正常启动
|
|
- 检查初始状态
|
|
"""
|
|
# 验证窗口标题
|
|
with patch.object(self.window, 'windowTitle', return_value='隐私学习软件 - 仿Word'):
|
|
title = self.window.windowTitle()
|
|
self.assertEqual(title, '隐私学习软件 - 仿Word')
|
|
|
|
# 验证窗口不是全屏
|
|
with patch.object(self.window, 'isFullScreen', return_value=False):
|
|
fullscreen = self.window.isFullScreen()
|
|
self.assertFalse(fullscreen)
|
|
|
|
def test_file_operations(self):
|
|
"""
|
|
测试文件操作
|
|
- 验证文件打开、保存等功能
|
|
"""
|
|
# 模拟菜单栏存在
|
|
with patch.object(self.window, 'menuBar', return_value=MagicMock()):
|
|
menubar = self.window.menuBar()
|
|
self.assertIsNotNone(menubar)
|
|
|
|
# 模拟状态栏存在
|
|
with patch.object(self.window, 'statusBar', return_value=MagicMock()):
|
|
statusbar = self.window.statusBar()
|
|
self.assertIsNotNone(statusbar)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |