-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_duplicate_check.py
More file actions
90 lines (71 loc) · 2.82 KB
/
Copy pathtest_duplicate_check.py
File metadata and controls
90 lines (71 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import unittest
from unittest.mock import MagicMock
import sys
import os
# Mock modules
mock_tk = MagicMock()
sys.modules['tkinter'] = mock_tk
sys.modules['tkinter.filedialog'] = MagicMock()
sys.modules['tkinter.scrolledtext'] = MagicMock()
sys.modules['tkinter.ttk'] = MagicMock()
sys.modules['tkinter.messagebox'] = MagicMock()
mock_win32 = MagicMock()
mock_client = MagicMock()
mock_win32.client = mock_client
sys.modules['win32com'] = mock_win32
sys.modules['win32com.client'] = mock_client
mock_pywintypes = MagicMock()
sys.modules['pywintypes'] = mock_pywintypes
# Import target
sys.path.append(os.getcwd())
try:
import main
except ImportError:
pass
class TestDuplicateCheck(unittest.TestCase):
def setUp(self):
self.app = main.WordMarkTool()
self.app.log_text = MagicMock()
self.app.root = MagicMock()
self.app.text_content = MagicMock()
self.app.text_content.get.return_value = "内部"
self.app.font_name = MagicMock()
self.app.font_name.get.return_value = "黑体"
self.app.font_size = MagicMock()
self.app.font_size.get.return_value = 16
self.app.alignment = MagicMock()
self.app.alignment.get.return_value = "左对齐"
def test_duplicate_skip(self):
"""测试已存在标记时是否返回 False"""
print("\n正在测试: 查重跳过逻辑...")
mock_word_app = MagicMock()
self.app.word_app = mock_word_app
# Setup mock doc
mock_doc = MagicMock()
mock_word_app.Documents.Open.return_value = mock_doc
# Scenario 1: Text exists
# Mock Paragraphs(1).Range.Text
mock_range = MagicMock()
mock_range.Text = "这是包含 内部 标记的文档"
mock_doc.Paragraphs.return_value.Range = mock_range
result = self.app._add_mark("dummy.docx")
print(f"Scenario 1 (Exists) Result: {result}")
self.assertFalse(result, "应该检测到重复并返回 False")
mock_doc.Save.assert_not_called()
def test_no_duplicate_add(self):
"""测试不存在标记时是否返回 True"""
print("\n正在测试: 正常添加逻辑...")
mock_word_app = MagicMock()
self.app.word_app = mock_word_app
mock_doc = MagicMock()
mock_word_app.Documents.Open.return_value = mock_doc
# Scenario 2: Text does not exist
mock_range = MagicMock()
mock_range.Text = "这是一个普通文档"
mock_doc.Paragraphs.return_value.Range = mock_range
result = self.app._add_mark("dummy.docx")
print(f"Scenario 2 (New) Result: {result}")
self.assertTrue(result, "应该返回 True")
mock_doc.Save.assert_called_once()
if __name__ == '__main__':
unittest.main()