提交 955f1583 authored 作者: 陈泽健's avatar 陈泽健

feat(DocumentAutoOptimizationCalibration): 扩展文档国际化功能支持多语种翻译

- 新增多语言支持包括韩文、法文、日语、俄语、西班牙语、阿拉伯语
- 添加 --to-lang 命令行参数用于指定目标翻译语言
- 集成 bing 翻译引擎作为默认引擎以支持国内网络环境
- 更新文档国际化转换功能支持多种目标语言格式
- 修改输出文件命名规则包含目标语言标识
- 完善 README 文档中的多语言翻译使用说明
- 重构翻译函数支持动态目标语言参数传递
- 优化 CLI 参数配置支持语言选择功能
上级 4c08eec7
...@@ -125,7 +125,8 @@ ...@@ -125,7 +125,8 @@
"mcp__chrome-devtools__fill_form", "mcp__chrome-devtools__fill_form",
"Bash(grep:*)", "Bash(grep:*)",
"Bash(mkdir:*)", "Bash(mkdir:*)",
"Bash(cd \"E:/GithubData/ubains-module-test/AuxiliaryTool/DocumentAutoOptimizationCalibration\" && pip install translators -q)" "Bash(cd \"E:/GithubData/ubains-module-test/AuxiliaryTool/DocumentAutoOptimizationCalibration\" && pip install translators -q)",
"Bash(ls -la \"E:\\\\GithubData\\\\ubains-module-test\\\\Docs\\\\PRD\" 2>&1 || dir \"E:\\\\GithubData\\\\ubains-module-test\\\\Docs\\\\PRD\" 2>&1)"
] ]
} }
} }
...@@ -12,11 +12,12 @@ ...@@ -12,11 +12,12 @@
- **表格格式统一**:统一表格字体、字号、对齐方式、边框样式 - **表格格式统一**:统一表格字体、字号、对齐方式、边框样式
- **页眉页脚设置**:自动添加页眉(文件名)和页脚(页码格式) - **页眉页脚设置**:自动添加页眉(文件名)和页脚(页码格式)
#### 国际化转换功能(新增) #### 国际化转换功能
- **文档翻译**:将中文文档自动翻译为英文 - **多语言翻译**:支持将中文翻译为韩文、法文、日语、俄语、西班牙语、阿拉伯语、英文
- **保留格式**:翻译过程中保留原有排版和样式 - **保留格式**:翻译过程中保留原有排版和样式
- **多引擎支持**:支持Google、百度、必应翻译引擎 - **多引擎支持**:支持Google、百度、必应翻译引擎
- **批量翻译**:支持段落、表格批量翻译 - **批量翻译**:支持段落、表格、页眉页脚、文本框批量翻译
- **目录更新**:自动翻译目录内容
### 设计原则 ### 设计原则
...@@ -144,56 +145,124 @@ python run.py --input "testcases/文档.docx" --log-level DEBUG ...@@ -144,56 +145,124 @@ python run.py --input "testcases/文档.docx" --log-level DEBUG
## 二、文档国际化转换 ## 二、文档国际化转换
### 功能说明 ### 功能说明
将中文Word文档自动翻译为英文,保留原有格式和样式。 将中文Word文档自动翻译为多种语言,保留原有格式和样式。
### 支持的目标语言
| 语言 | 代码 | 命令示例 |
|------|------|----------|
| 韩文 | ko | `--to-lang ko` |
| 法文 | fr | `--to-lang fr` |
| 日语 | ja | `--to-lang ja` |
| 俄语 | ru | `--to-lang ru` |
| 西班牙语 | es | `--to-lang es` |
| 阿拉伯语 | ar | `--to-lang ar` |
| 英文 | en | 默认 |
### 翻译模式命令 ### 翻译模式命令
#### 1. 基础翻译(使用默认引擎 #### 1. 基础翻译(默认翻译为英文
```bash ```bash
python run.py --translate --input 文档.docx python run.py --translate --input 文档.docx
``` ```
输出:`reports/文档_英文版.docx` 输出:`reports/文档_英文版.docx`
#### 2. 使用必应翻译引擎(推荐) #### 2. 翻译为韩文
```bash
python run.py --translate --to-lang ko --input 文档.docx
```
输出:`reports/文档_韩文版.docx`
#### 3. 翻译为法文
```bash
python run.py --translate --to-lang fr --input 文档.docx
```
输出:`reports/文档_法文版.docx`
#### 4. 翻译为日语
```bash ```bash
python run.py --translate --translate-engine bing --input 文档.docx python run.py --translate --to-lang ja --input 文档.docx
``` ```
输出:`reports/文档_日语版.docx`
#### 3. 使用百度翻译引擎 #### 5. 翻译为俄语
```bash ```bash
python run.py --translate --translate-engine baidu --input 文档.docx python run.py --translate --to-lang ru --input 文档.docx
``` ```
输出:`reports/文档_俄语版.docx`
#### 4. 使用谷歌翻译引擎(大陆可能不可用) #### 6. 翻译为西班牙语
```bash ```bash
python run.py --translate --translate-engine google --input 文档.docx python run.py --translate --to-lang es --input 文档.docx
``` ```
输出:`reports/文档_西班牙语版.docx`
#### 5. 翻译并指定输出路径 #### 7. 翻译为阿拉伯语
```bash ```bash
python run.py --translate --input "testcases/文档.docx" --output "reports/英文版/English_Version.docx" python run.py --translate --to-lang ar --input 文档.docx
```
输出:`reports/文档_阿拉伯语版.docx`
#### 8. 翻译为英文(默认)
```bash
python run.py --translate --input 文档.docx
```
输出:`reports/文档_英文版.docx`
#### 9. 指定翻译引擎
```bash
# 使用百度引擎
python run.py --translate --translate-engine baidu --to-lang fr --input 文档.docx
# 使用谷歌引擎(需要科学上网)
python run.py --translate --translate-engine google --to-lang ja --input 文档.docx
```
#### 10. 翻译并指定输出路径
```bash
python run.py --translate --to-lang ja --input "testcases/文档.docx" --output "reports/日语版.docx"
``` ```
### 国际化转换示例 ### 国际化转换示例
```bash ```bash
# 示例1:翻译为英文(使用必应引擎) # 示例1:翻译为韩文(默认使用bing引擎)
python run.py --translate --translate-engine bing --input "testcases/文档.docx" python run.py --translate --to-lang ko --input "testcases/文档.docx"
# 示例2:翻译为法文
python run.py --translate --to-lang fr --input "testcases/文档.docx"
# 示例2:翻译大型文档 # 示例3:翻译为日语
python run.py --translate --translate-engine baidu --input "testcases/新统一平台自动化部署操作指导.docx" python run.py --translate --to-lang ja --input "testcases/新统一平台自动化部署操作指导.docx"
# 示例3:查看翻译详细日志 # 示例4:翻译为俄语
python run.py --translate --translate-engine bing --input "testcases/文档.docx" --log-level DEBUG python run.py --translate --to-lang ru --input "testcases/文档.docx"
# 示例5:翻译为西班牙语
python run.py --translate --to-lang es --input "testcases/文档.docx"
# 示例6:翻译为阿拉伯语
python run.py --translate --to-lang ar --input "testcases/文档.docx"
# 示例7:翻译为英文(默认语言,可省略--to-lang参数)
python run.py --translate --input "testcases/文档.docx"
# 示例8:使用百度引擎翻译为韩文
python run.py --translate --translate-engine baidu --to-lang ko --input "testcases/文档.docx"
# 示例9:查看翻译详细日志
python run.py --translate --to-lang es --input "testcases/文档.docx" --log-level DEBUG
``` ```
### 翻译引擎对比 ### 翻译引擎对比
| 引擎 | 速度 | 质量 | 国内可用性 | 推荐场景 | | 引擎 | 速度 | 质量 | 国内可用性 | 默认 | 推荐场景 |
|------|------|------|-----------|---------| |------|------|------|-----------|------|---------|
| bing | ⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ 可用 | 技术文档翻译 | | bing | ⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ 可用 | ✅ 是 | 技术文档翻译(推荐) |
| baidu | ⭐⭐⭐⭐ | ⭐⭐⭐ | ✅ 可用 | 快速翻译 | | baidu | ⭐⭐⭐⭐ | ⭐⭐⭐ | ✅ 可用 | - | 快速翻译 |
| google | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ❌ 不可用 | 高质量翻译(需科学上网) | | google | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ❌ 不可用 | - | 高质量翻译(需科学上网) |
> **注意**:默认使用 bing 引擎,确保在国内网络环境下可用。如需使用其他引擎,请通过 `--translate-engine` 参数指定。
--- ---
...@@ -209,6 +278,7 @@ python run.py --translate --translate-engine bing --input "testcases/文档.docx ...@@ -209,6 +278,7 @@ python run.py --translate --translate-engine bing --input "testcases/文档.docx
| `--list` | `-l` | 仅列出可用文档 | `--list` | | `--list` | `-l` | 仅列出可用文档 | `--list` |
| `--translate` | `-t` | 启用翻译模式 | `--translate` | | `--translate` | `-t` | 启用翻译模式 | `--translate` |
| `--translate-engine` | - | 翻译引擎(google/baidu/bing) | `--translate-engine bing` | | `--translate-engine` | - | 翻译引擎(google/baidu/bing) | `--translate-engine bing` |
| `--to-lang` | - | 目标语言(ko/fr/ja/ru/es/ar/en) | `--to-lang fr` |
| `--help` | `-h` | 显示帮助信息 | `--help` | | `--help` | `-h` | 显示帮助信息 | `--help` |
--- ---
...@@ -324,6 +394,8 @@ python run.py --input "文档.docx" --footer-start-section 3 ...@@ -324,6 +394,8 @@ python run.py --input "文档.docx" --footer-start-section 3
| 版本 | 日期 | 说明 | | 版本 | 日期 | 说明 |
|------|------|------| |------|------|------|
| v1.3.1 | 2026-03-11 | 修复:将默认翻译引擎从google改为bing,支持国内网络环境 |
| v1.3.0 | 2026-03-11 | 新增多语言翻译支持(韩文、法文、日语、俄语、西班牙语、阿拉伯语、英文),新增--to-lang参数 |
| v1.2.0 | 2026-03-10 | 优化多节文档页眉页脚处理,新增--footer-start-section参数 | | v1.2.0 | 2026-03-10 | 优化多节文档页眉页脚处理,新增--footer-start-section参数 |
| v1.1.0 | 2026-03-10 | 新增文档国际化转换功能,支持中英翻译 | | v1.1.0 | 2026-03-10 | 新增文档国际化转换功能,支持中英翻译 |
| v1.0.0 | 2025-03-10 | 初始版本,支持基础格式优化 | | v1.0.0 | 2025-03-10 | 初始版本,支持基础格式优化 |
...@@ -339,6 +411,7 @@ python run.py --input "文档.docx" --footer-start-section 3 ...@@ -339,6 +411,7 @@ python run.py --input "文档.docx" --footer-start-section 3
- [ ] 支持自动目录更新 - [ ] 支持自动目录更新
### 国际化翻译 ### 国际化翻译
- [x] 支持多种目标语言(韩文、法文、日语、俄语、西班牙语、阿拉伯语、英文)
- [ ] 支持更多翻译引擎(DeepL免费版等) - [ ] 支持更多翻译引擎(DeepL免费版等)
- [ ] 支持自定义术语词典 - [ ] 支持自定义术语词典
- [ ] 支持翻译记忆功能 - [ ] 支持翻译记忆功能
......
...@@ -17,6 +17,10 @@ from src.config import ( ...@@ -17,6 +17,10 @@ from src.config import (
LOG_DATE_FORMAT, LOG_DATE_FORMAT,
DEFAULT_TRANSLATE_ENGINE, DEFAULT_TRANSLATE_ENGINE,
SUPPORTED_ENGINES, SUPPORTED_ENGINES,
LANGUAGE_CODES,
LANGUAGE_NAMES,
SUPPORTED_TARGET_LANGUAGES,
TARGET_LANGUAGE,
) )
from src.optimizer import optimize_document from src.optimizer import optimize_document
from src.internationalizer import internationalize_document from src.internationalizer import internationalize_document
...@@ -125,6 +129,8 @@ def parse_command_line() -> argparse.Namespace: ...@@ -125,6 +129,8 @@ def parse_command_line() -> argparse.Namespace:
示例用法(国际化翻译): 示例用法(国际化翻译):
python run.py --translate --input 文档.docx # 翻译为英文 python run.py --translate --input 文档.docx # 翻译为英文
python run.py --translate --to-lang ko --input ... # 翻译为韩文
python run.py --translate --to-lang fr --input ... # 翻译为法文
python run.py --translate --engine baidu --input ... # 指定翻译引擎 python run.py --translate --engine baidu --input ... # 指定翻译引擎
注意: 注意:
...@@ -199,6 +205,16 @@ def parse_command_line() -> argparse.Namespace: ...@@ -199,6 +205,16 @@ def parse_command_line() -> argparse.Namespace:
help=f'翻译引擎(默认为{DEFAULT_TRANSLATE_ENGINE})' help=f'翻译引擎(默认为{DEFAULT_TRANSLATE_ENGINE})'
) )
parser.add_argument(
'--to-lang',
type=str,
dest='to_lang',
default=TARGET_LANGUAGE,
choices=SUPPORTED_TARGET_LANGUAGES,
metavar='LANG',
help=f'目标语言代码: {", ".join([f"{k}({v})" for k, v in LANGUAGE_CODES.items()])} (默认: {TARGET_LANGUAGE})'
)
return parser.parse_args() return parser.parse_args()
...@@ -252,13 +268,15 @@ def run_cli(args: argparse.Namespace) -> int: ...@@ -252,13 +268,15 @@ def run_cli(args: argparse.Namespace) -> int:
if args.translate_mode: if args.translate_mode:
# ==================== 翻译模式 ==================== # ==================== 翻译模式 ====================
print(f"\n使用翻译引擎: {args.translate_engine}") print(f"\n使用翻译引擎: {args.translate_engine}")
print(f"目标语言: {LANGUAGE_NAMES.get(args.to_lang, args.to_lang)}")
print("翻译过程中,请耐心等待...") print("翻译过程中,请耐心等待...")
try: try:
result_path = internationalize_document( result_path = internationalize_document(
input_path=input_path, input_path=input_path,
output_path=output_path, output_path=output_path,
engine=args.translate_engine engine=args.translate_engine,
to_lang=args.to_lang
) )
print("\n" + "=" * 60) print("\n" + "=" * 60)
......
...@@ -109,15 +109,35 @@ LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" ...@@ -109,15 +109,35 @@ LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
# ================================ # ================================
# 翻译配置 # 翻译配置
# ================================ # ================================
# 默认翻译引擎 # 默认翻译引擎(使用bing以支持国内网络环境)
DEFAULT_TRANSLATE_ENGINE = "google" # google, baidu, bing DEFAULT_TRANSLATE_ENGINE = "bing" # google, baidu, bing
# 支持的翻译引擎 # 支持的翻译引擎
SUPPORTED_ENGINES = ["google", "baidu", "bing"] SUPPORTED_ENGINES = ["google", "baidu", "bing"]
# 源语言和目标语言 # 源语言和目标语言
SOURCE_LANGUAGE = "zh" # 中文 SOURCE_LANGUAGE = "zh" # 中文
TARGET_LANGUAGE = "en" # 英文 TARGET_LANGUAGE = "en" # 英文(默认)
# ================================
# 多语言支持配置
# ================================
# 支持的目标语言代码映射
LANGUAGE_CODES = {
"韩文": "ko",
"法文": "fr",
"日语": "ja",
"俄语": "ru",
"西班牙语": "es",
"阿拉伯语": "ar",
"英文": "en" # 保留原有
}
# 语言代码到语言名称的反向映射
LANGUAGE_NAMES = {v: k for k, v in LANGUAGE_CODES.items()}
# 支持的目标语言列表(用于CLI验证)
SUPPORTED_TARGET_LANGUAGES = list(LANGUAGE_CODES.values())
# 翻译延迟(秒),避免频率限制 # 翻译延迟(秒),避免频率限制
TRANSLATE_DELAY = 0.5 TRANSLATE_DELAY = 0.5
...@@ -137,7 +157,7 @@ TRANSLATE_TIMEOUT = 10 ...@@ -137,7 +157,7 @@ TRANSLATE_TIMEOUT = 10
# ================================ # ================================
# 版本信息 # 版本信息
# ================================ # ================================
__version__ = "1.1.0" __version__ = "1.3.1"
__author__ = "Document Optimizer" __author__ = "Document Optimizer"
__description__ = "文档自动优化校准工具" __description__ = "文档自动优化校准工具"
......
此差异已折叠。
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
import json import json
import time import time
import os import os
import argparse
from datetime import datetime from datetime import datetime
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
...@@ -20,11 +21,17 @@ from selenium.common.exceptions import TimeoutException, NoSuchElementException ...@@ -20,11 +21,17 @@ from selenium.common.exceptions import TimeoutException, NoSuchElementException
class TestCaseGenerator: class TestCaseGenerator:
"""测试用例生成器""" """测试用例生成器"""
def __init__(self): def __init__(self, headless=False):
"""初始化测试用例生成器
Args:
headless: 是否使用无头模式(不显示浏览器界面),默认为False
"""
self.base_dir = os.path.dirname(os.path.abspath(__file__)) self.base_dir = os.path.dirname(os.path.abspath(__file__))
self.config_dir = os.path.join(self.base_dir, 'config') self.config_dir = os.path.join(self.base_dir, 'config')
self.testcases_dir = os.path.join(self.base_dir, 'testcases') self.testcases_dir = os.path.join(self.base_dir, 'testcases')
self.driver = None self.driver = None
self.headless = headless # 保存无头模式配置
# 确保目录存在 # 确保目录存在
os.makedirs(self.config_dir, exist_ok=True) os.makedirs(self.config_dir, exist_ok=True)
...@@ -44,7 +51,14 @@ class TestCaseGenerator: ...@@ -44,7 +51,14 @@ class TestCaseGenerator:
def init_driver(self): def init_driver(self):
"""初始化浏览器驱动""" """初始化浏览器驱动"""
options = webdriver.ChromeOptions() options = webdriver.ChromeOptions()
# options.add_argument('--headless') # 取消注释可无头模式运行
# 根据配置决定是否使用无头模式
if self.headless:
options.add_argument('--headless') # 无头模式:不显示浏览器窗口
print("✓ 浏览器驱动初始化完成(无头模式)")
else:
print("✓ 浏览器驱动初始化完成(有界面模式)")
options.add_argument('--no-sandbox') options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage') options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu') options.add_argument('--disable-gpu')
...@@ -57,7 +71,6 @@ class TestCaseGenerator: ...@@ -57,7 +71,6 @@ class TestCaseGenerator:
self.driver = webdriver.Chrome(options=options) self.driver = webdriver.Chrome(options=options)
self.driver.implicitly_wait(10) self.driver.implicitly_wait(10)
print("✓ 浏览器驱动初始化完成")
def handle_ssl_warning(self): def handle_ssl_warning(self):
"""处理SSL证书警告页面""" """处理SSL证书警告页面"""
...@@ -687,6 +700,9 @@ class TestCaseGenerator: ...@@ -687,6 +700,9 @@ class TestCaseGenerator:
"""执行生成流程""" """执行生成流程"""
print("=" * 60) print("=" * 60)
print("自动化测试用例生成器") print("自动化测试用例生成器")
# 显示当前运行模式
mode = "无界面模式" if self.headless else "有界面模式"
print(f"运行模式: {mode}")
print("=" * 60) print("=" * 60)
# 加载配置 # 加载配置
...@@ -738,9 +754,36 @@ class TestCaseGenerator: ...@@ -738,9 +754,36 @@ class TestCaseGenerator:
self.driver.quit() self.driver.quit()
def parse_args():
"""解析命令行参数
Returns:
argparse.Namespace: 解析后的参数对象
"""
parser = argparse.ArgumentParser(
description='自动化测试用例生成器',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog='''
使用示例:
有界面模式: python generate_testcases.py
无界面模式: python generate_testcases.py --headless
'''
)
parser.add_argument(
'--headless',
action='store_true',
help='启用无头模式(不显示浏览器界面),适用于CI/CD或服务器后台执行'
)
return parser.parse_args()
def main(): def main():
"""主函数""" """主函数"""
generator = TestCaseGenerator() # 解析命令行参数
args = parse_args()
# 根据参数创建生成器实例
generator = TestCaseGenerator(headless=args.headless)
try: try:
generator.run() generator.run()
except Exception as e: except Exception as e:
......
# 问题描述
## 问题现象
- 执行代码进行除英文以外的语种翻译时,提示引擎使用的google,需要像英文翻译一样通过命令行参数使用bing引擎进行翻译。
## 日志信息
```ignorelang
PS E:\GithubData\ubains-module-test\AuxiliaryTool\DocumentAutoOptimizationCalibration> python run.py --translate --to-lang ko --input "./testcases/新统一平台自动化部署操作指导.docx"
2026-03-11 10:36:23 - src.cli - INFO - 日志系统初始化完成,级别=INFO
2026-03-11 10:36:23 - src.cli - INFO - 输入文档: ./testcases/新统一平台自动化部署操作指导.docx
使用翻译引擎: google
目标语言: 韩文
翻译过程中,请耐心等待...
2026-03-11 10:36:23 - src.internationalizer - INFO - 开始国际化转换: ./testcases/新统一平台自动化部署操作指导.docx
2026-03-11 10:36:23 - src.internationalizer - INFO - 使用翻译引擎: google
2026-03-11 10:36:23 - src.internationalizer - INFO - 目标语言: 韩文 (ko)
2026-03-11 10:36:23 - src.internationalizer - INFO - 输出路径: E:\GithubData\ubains-module-test\AuxiliaryTool\DocumentAutoOptimizationCalibration\reports\新统一平台自动化部署操作指导_韩文版.docx
2026-03-11 10:36:23 - src.translator - WARNING - 翻译失败(第1次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:24 - src.translator - WARNING - 翻译失败(第2次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:25 - src.translator - WARNING - 翻译失败(第3次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:25 - src.translator - ERROR - 翻译最终失败: Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:25 - src.internationalizer - WARNING - 翻译失败或未翻译: 版权所有 © 优本技术(深圳)有限公司 2008。 保留一切
2026-03-11 10:36:25 - src.translator - WARNING - 翻译失败(第1次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:26 - src.translator - WARNING - 翻译失败(第2次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:27 - src.translator - WARNING - 翻译失败(第3次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:27 - src.translator - ERROR - 翻译最终失败: Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:27 - src.internationalizer - WARNING - 翻译失败或未翻译: 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内
2026-03-11 10:36:27 - src.translator - WARNING - 翻译失败(第1次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:28 - src.translator - WARNING - 翻译失败(第2次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:29 - src.translator - WARNING - 翻译失败(第3次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:29 - src.translator - ERROR - 翻译最终失败: Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:29 - src.internationalizer - WARNING - 翻译失败或未翻译: 商标声明
2026-03-11 10:36:29 - src.translator - WARNING - 翻译失败(第1次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:30 - src.translator - WARNING - 翻译失败(第2次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:31 - src.translator - WARNING - 翻译失败(第3次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:31 - src.translator - ERROR - 翻译最终失败: Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:31 - src.internationalizer - WARNING - 翻译失败或未翻译: 和其他优本技术商标均为优本技术(深圳)有限公司的商标。 本文
2026-03-11 10:36:31 - src.translator - WARNING - 翻译失败(第1次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:32 - src.translator - WARNING - 翻译失败(第2次尝试): Google service was offline in inland of China on Oct 2022.
```
\ No newline at end of file
# 国际化语种翻译需调整引擎_问题处理_计划执行
## 1. 问题描述
### 问题现象
执行代码进行除英文以外的语种翻译时,提示引擎使用的 google,需要像英文翻译一样通过命令行参数使用 bing 引擎进行翻译。
### 日志信息
```ignorelang
PS E:\GithubData\ubains-module-test\AuxiliaryTool\DocumentAutoOptimizationCalibration> python run.py --translate --to-lang ko --input "./testcases/新统一平台自动化部署操作指导.docx"
使用翻译引擎: google
目标语言: 韩文
翻译过程中,请耐心等待...
...
2026-03-11 10:36:23 - src.translator - WARNING - 翻译失败(第1次尝试): Google service was offline in inland of China on Oct 2022.
2026-03-11 10:36:24 - src.translator - WARNING - 翻译失败(第2次尝试): Google service was offline in inland of China on Oct 2022.
...
```
### 预期结果
- 默认使用 bing 引擎进行翻译(支持国内网络环境)
### 实际结果
- 默认使用 google 引擎,导致翻译失败
---
## 2. 问题分析
### 根本原因
配置文件 `src/config.py` 中默认翻译引擎设置为 `"google"`,但 google 翻译服务在国内不可用。
### 问题代码
```python
# src/config.py
DEFAULT_TRANSLATE_ENGINE = "google" # google在国内不可用
```
### 引擎可用性对比
| 引擎 | 国内可用性 | 说明 |
|------|-----------|------|
| google | ❌ 不可用 | 需要科学上网 |
| baidu | ✅ 可用 | 需要API密钥 |
| bing | ✅ 可用 | 免费使用,推荐 |
---
## 3. 解决方案
将默认翻译引擎从 `"google"` 改为 `"bing"`,确保在无额外配置的情况下可以正常翻译。
### 修改内容
```python
# src/config.py
# 修改前
DEFAULT_TRANSLATE_ENGINE = "google"
# 修改后
DEFAULT_TRANSLATE_ENGINE = "bing"
```
### 理由
1. bing 引擎在国内网络环境下可用
2. 不需要额外配置API密钥
3. 翻译质量稳定
4. 用户仍可通过 `--translate-engine` 参数切换到其他引擎
---
## 4. 实施计划
### 4.1 代码修改
- [x] 修改 `src/config.py` - 将默认引擎改为 bing
### 4.2 验证测试
- [x] 语法检查通过
- [ ] 测试韩文翻译
- [ ] 测试法文翻译
- [ ] 测试日语翻译
### 4.3 文档更新
- [x] 创建计划执行文档
---
## 5. 实施状态
| 项目 | 状态 | 说明 |
|------|------|------|
| 问题分析 | ✅ 完成 | 已找到根本原因 |
| 解决方案设计 | ✅ 完成 | 将默认引擎改为bing |
| 代码实现 | ✅ 完成 | 已修改 config.py |
| 语法验证 | ✅ 完成 | Python语法检查通过 |
| 功能测试 | 待进行 | 需要测试各语言翻译 |
---
## 6. 测试验证
### 测试命令
```bash
cd AuxiliaryTool/DocumentAutoOptimizationCalibration
# 测试默认引擎(应使用bing)
python run.py --translate --to-lang ko --input "testcases/新统一平台自动化部署操作指导.docx"
# 测试指定引擎
python run.py --translate --translate-engine baidu --to-lang fr --input "testcases/文档.docx"
# 测试英文翻译(应使用bing)
python run.py --translate --input "testcases/文档.docx"
```
### 预期结果
- 默认使用 bing 引擎
- 翻译成功,不再出现 "Google service was offline" 错误
- 显示 "使用翻译引擎: bing"
---
## 7. 代码修改记录
### 修改文件
- `src/config.py`
### 修改内容
```diff
# 默认翻译引擎
-DEFAULT_TRANSLATE_ENGINE = "google" # google, baidu, bing
+DEFAULT_TRANSLATE_ENGINE = "bing" # google, baidu, bing(默认使用bing以支持国内网络环境)
```
### 版本更新
```python
__version__ = "1.3.1" # 修复:将默认翻译引擎改为bing
```
---
## 8. 注意事项
### 用户仍可指定其他引擎
修改默认引擎后,用户仍可以通过 `--translate-engine` 参数指定使用其他引擎:
```bash
# 使用百度引擎
python run.py --translate --translate-engine baidu --input "文档.docx"
# 使用谷歌引擎(需要科学上网)
python run.py --translate --translate-engine google --input "文档.docx"
```
### 各引擎选择建议
| 场景 | 推荐引擎 | 命令 |
|------|----------|------|
| 国内常规使用 | bing | 默认,无需指定 |
| 需要API调用 | baidu | `--translate-engine baidu` |
| 国外服务器/有代理 | google | `--translate-engine google` |
# 问题描述
## 问题现象
- 执行代码发现程序异常,LANGUAGE_NAMES未定义
## 日志信息
```ignorelang
PS E:\GithubData\ubains-module-test\AuxiliaryTool\DocumentAutoOptimizationCalibration> python run.py --translate --translate-engine bing --input "testcases/新统一平台自动化部署操作指导.docx"
2026-03-11 10:27:57 - src.cli - INFO - 日志系统初始化完成,级别=INFO
2026-03-11 10:27:57 - src.cli - INFO - 输入文档: testcases/新统一平台自动化部署操作指导.docx
使用翻译引擎: bing
2026-03-11 10:27:57 - src.main - ERROR - 程序异常: name 'LANGUAGE_NAMES' is not defined
```
\ No newline at end of file
# 程序执行异常字段未定义_问题处理_计划执行
## 1. 问题描述
### 问题现象
执行代码发现程序异常,`LANGUAGE_NAMES` 未定义。
### 日志信息
```ignorelang
PS E:\GithubData\ubains-module-test\AuxiliaryTool\DocumentAutoOptimizationCalibration> python run.py --translate --translate-engine bing --input "testcases/新统一平台自动化部署操作指导.docx"
2026-03-11 10:27:57 - src.cli - INFO - 日志系统初始化完成,级别=INFO
2026-03-11 10:27:57 - src.cli - INFO - 输入文档: testcases/新统一平台自动化部署操作指导.docx
使用翻译引擎: bing
2026-03-11 10:27:57 - src.main - ERROR - 程序异常: name 'LANGUAGE_NAMES' is not defined
```
---
## 2. 问题分析
### 根本原因
`src/cli.py` 中使用了 `LANGUAGE_NAMES` 变量,但在导入 `src.config` 时没有导入该变量。
### 问题代码
```python
# src/cli.py 第13-23行
from src.config import (
TESTCASES_DIR,
REPORTS_DIR,
LOG_FORMAT,
LOG_DATE_FORMAT,
DEFAULT_TRANSLATE_ENGINE,
SUPPORTED_ENGINES,
LANGUAGE_CODES,
SUPPORTED_TARGET_LANGUAGES,
TARGET_LANGUAGE,
# 缺少 LANGUAGE_NAMES
)
# 第270行使用了 LANGUAGE_NAMES
print(f"目标语言: {LANGUAGE_NAMES.get(args.to_lang, args.to_lang)}")
```
### config.py 中的定义
```python
# src/config.py
LANGUAGE_CODES = {
"韩文": "ko",
"法文": "fr",
"日语": "ja",
"俄语": "ru",
"西班牙语": "es",
"阿拉伯语": "ar",
"英文": "en"
}
# 语言代码到语言名称的反向映射
LANGUAGE_NAMES = {v: k for k, v in LANGUAGE_CODES.items()}
```
---
## 3. 解决方案
`src/cli.py` 的导入语句中添加 `LANGUAGE_NAMES`
### 修改内容
```python
from src.config import (
TESTCASES_DIR,
REPORTS_DIR,
LOG_FORMAT,
LOG_DATE_FORMAT,
DEFAULT_TRANSLATE_ENGINE,
SUPPORTED_ENGINES,
LANGUAGE_CODES,
LANGUAGE_NAMES, # 新增
SUPPORTED_TARGET_LANGUAGES,
TARGET_LANGUAGE,
)
```
---
## 4. 实施计划
### 4.1 代码修改
- [x] 修改 `src/cli.py` - 添加 `LANGUAGE_NAMES` 导入
### 4.2 验证测试
- [x] 语法检查通过
- [ ] 执行翻译命令测试
---
## 5. 实施状态
| 项目 | 状态 | 说明 |
|------|------|------|
| 问题分析 | ✅ 完成 | 已找到根本原因 |
| 解决方案设计 | ✅ 完成 | 添加缺失的导入 |
| 代码实现 | ✅ 完成 | 已修改 cli.py |
| 语法验证 | ✅ 完成 | Python语法检查通过 |
| 功能测试 | 待进行 | 需要执行翻译命令验证 |
---
## 6. 测试验证
### 测试命令
```bash
cd AuxiliaryTool/DocumentAutoOptimizationCalibration
python run.py --translate --translate-engine bing --input "testcases/新统一平台自动化部署操作指导.docx"
```
### 预期结果
- 程序正常运行,不再报 `LANGUAGE_NAMES` 未定义错误
- 显示目标语言信息
---
## 7. 代码修改记录
### 修改文件
- `src/cli.py`
### 修改内容
```diff
from src.config import (
TESTCASES_DIR,
REPORTS_DIR,
LOG_FORMAT,
LOG_DATE_FORMAT,
DEFAULT_TRANSLATE_ENGINE,
SUPPORTED_ENGINES,
LANGUAGE_CODES,
+ LANGUAGE_NAMES,
SUPPORTED_TARGET_LANGUAGES,
TARGET_LANGUAGE,
)
```
# 文档内容国际化转换_优化需求文档
## 代码路径
- 代码路径:[AuxiliaryTool/DocumentAutoOptimizationCalibration]
## 功能需求
### 功能目标
**目标:** 实现将中文内容转换成韩文、法文、日语、俄语、西班牙语、阿拉伯语。
### 需求描述
#### 文档路径获取
- 文档路径:[AuxiliaryTool/DocumentAutoOptimizationCalibration/testcases/新统一平台自动化部署操作指导.docx]
### 测试报告内容约束
#### 内容转换规则
- 译文控制:通过命令参数或是选择项来控制选择译文。
- LANGUAGE_CODES = {
"韩文": "ko",
"法文": "fr",
"日语": "ja",
"俄语": "ru",
"西班牙语": "es",
"阿拉伯语": "ar"
}
- 在不影响排版的前提下将中文内容转换为其他语种。
- 转换过程中需保留原有内容、图片、超链接或批注等元素。
- 转后后的文档内容需符合所选语种的表达习惯,且语法正确。
#### 功能实现方式
- 翻译服务:使用当前实现的bing引擎
- 领域术语处理:对于文档中涉及的领域术语,需进行特殊处理,确保翻译结果准确。例如,“服务器”翻译为“Server”,“管理员”翻译为“Administrator”,“版本信息”翻译为“Version Information”等,暂不考虑术语库。
- 元素保留细节:需保留图片、超链接或批注等元素。
- 置信度阈值:置信度阈值为0.8,对于低置信度翻译结果,先进行标记黄色背景改变与日志记录,再进行人工审核。(暂不考虑)
- 代码位置:在 [AuxiliaryTool/DocumentAutoOptimizationCalibration] 中补充实现,不影响原有功能。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
---
\ No newline at end of file
# 文档内容国际化转换_优化_计划执行
## 1. 需求概述
### 功能目标
实现将中文内容转换成韩文、法文、日语、俄语、西班牙语、阿拉伯语。
### 代码路径
- `AuxiliaryTool/DocumentAutoOptimizationCalibration`
---
## 2. 语种配置
### 支持的目标语言
```python
LANGUAGE_CODES = {
"韩文": "ko",
"法文": "fr",
"日语": "ja",
"俄语": "ru",
"西班牙语": "es",
"阿拉伯语": "ar"
}
```
---
## 3. 问题分析
### 当前实现状态
1. **支持引擎**:google、baidu、bing
2. **默认配置**:中文(zh) → 英文(en)
3. **语言固定**:目标语言在配置文件中硬编码
### 需要修改的地方
1. **配置模块**(`config.py`):添加多语言支持配置
2. **翻译模块**(`translator.py`):支持动态目标语言
3. **CLI模块**(`cli.py`):添加语言选择参数
4. **国际化模块**(`internationalizer.py`):使用动态目标语言
---
## 4. 解决方案
### 方案概述
1.`config.py` 中添加语种代码映射
2. 在 CLI 中添加 `--to-lang` 参数
3. 修改翻译函数接受动态目标语言参数
4. 更新使用说明文档
### 功能设计
```bash
# 使用示例
python run.py --translate --input "文档.docx" --to-lang ko # 韩文
python run.py --translate --input "文档.docx" --to-lang fr # 法文
python run.py --translate --input "文档.docx" --to-lang ja # 日语
python run.py --translate --input "文档.docx" --to-lang ru # 俄语
python run.py --translate --input "文档.docx" --to-lang es # 西班牙语
python run.py --translate --input "文档.docx" --to-lang ar # 阿拉伯语
```
---
## 5. 实施计划
### 5.1 代码修改
- [ ] 修改 `src/config.py` - 添加语种代码配置
- [ ] 修改 `src/cli.py` - 添加 `--to-lang` 参数
- [ ] 修改 `src/main.py` - 传递目标语言参数
- [ ] 修改 `src/internationalizer.py` - 使用动态目标语言
- [ ] 更新 `README.md` - 添加多语言使用说明
### 5.2 测试验证
- [ ] 测试韩文翻译
- [ ] 测试法文翻译
- [ ] 测试日语翻译
- [ ] 测试俄语翻译
- [ ] 测试西班牙语翻译
- [ ] 测试阿拉伯语翻译
- [ ] 验证排版保持正常
### 5.3 文档更新
- [x] 创建计划执行文档
- [ ] 更新README.md
---
## 6. 代码实现设计
### 6.1 配置文件修改 (`src/config.py`)
```python
# ================================
# 多语言支持配置
# ================================
# 支持的目标语言代码映射
LANGUAGE_CODES = {
"韩文": "ko",
"法文": "fr",
"日语": "ja",
"俄语": "ru",
"西班牙语": "es",
"阿拉伯语": "ar",
"英文": "en" # 保留原有
}
# 语言代码到语言名称的反向映射
LANGUAGE_NAMES = {v: k for k, v in LANGUAGE_CODES.items()}
# 支持的目标语言列表(用于CLI验证)
SUPPORTED_TARGET_LANGUAGES = list(LANGUAGE_CODES.values())
```
### 6.2 CLI修改 (`src/cli.py`)
添加 `--to-lang` 参数:
```python
parser.add_argument(
'--to-lang',
dest='to_lang',
default=TARGET_LANGUAGE,
choices=SUPPORTED_TARGET_LANGUAGES,
metavar='LANG',
help=f'目标语言: {", ".join([f"{k}({v})" for k, v in LANGUAGE_CODES.items()])} (默认: {TARGET_LANGUAGE})'
)
```
### 6.3 主函数修改 (`src/main.py`)
传递目标语言参数:
```python
def main():
# ... 现有代码 ...
if args.translate:
output_path = internationalize_document(
input_path=args.input,
output_path=args.output,
engine=args.translate_engine,
to_lang=args.to_lang # 新增参数
)
```
### 6.4 国际化模块修改 (`src/internationalizer.py`)
修改函数签名,添加目标语言参数:
```python
def internationalize_document(
input_path: str,
output_path: Optional[str] = None,
engine: str = "google",
to_lang: str = "en" # 新增参数,默认英文
) -> str:
"""
文档国际化转换(主函数)
Args:
input_path: 输入文档路径
output_path: 输出文档路径(可选)
engine: 翻译引擎
to_lang: 目标语言代码 (ko, fr, ja, ru, es, ar, en)
Returns:
输出文档路径
"""
# 使用传入的to_lang参数
# 修改所有translate_text调用,传入to_lang参数
```
---
## 7. 注意事项
### 7.1 阿拉伯语特殊处理
- 阿拉伯语是**从右到左(RTL)**书写
- 需要确保Word文档正确显示方向
- 可能需要设置段落方向属性
### 7.2 字体支持
- 某些语言需要特殊字体才能正确显示
- 建议用户安装对应语言的字体包
- 阿拉伯语、俄语需要特殊字体支持
### 7.3 翻译质量
- 机器翻译可能存在误差
- 建议翻译后进行人工校对
- 专业术语可能翻译不准确
### 7.4 API限制
- Bing翻译有请求频率限制
- 大文档翻译需要较长时间
- 建议分段翻译大型文档
---
## 8. 测试计划
### 测试用例
| 编号 | 测试语言 | 命令 | 预期结果 |
|------|----------|------|----------|
| 1 | 韩文 | `--to-lang ko` | 文档内容翻译为韩文 |
| 2 | 法文 | `--to-lang fr` | 文档内容翻译为法文 |
| 3 | 日语 | `--to-lang ja` | 文档内容翻译为日语 |
| 4 | 俄语 | `--to-lang ru` | 文档内容翻译为俄语 |
| 5 | 西班牙语 | `--to-lang es` | 文档内容翻译为西班牙语 |
| 6 | 阿拉伯语 | `--to-lang ar` | 文档内容翻译为阿拉伯语 |
| 7 | 英文(默认) | 不指定参数 | 文档内容翻译为英文 |
### 测试文档
- 测试文档:`testcases/新统一平台自动化部署操作指导.docx`
---
## 9. 实施状态
| 项目 | 状态 | 说明 |
|------|------|------|
| 需求分析 | ✅ 完成 | 需求已明确 |
| 方案设计 | ✅ 完成 | 方案已确定 |
| 计划文档 | ✅ 完成 | 本文档 |
| 代码实现 | ✅ 完成 | 所有文件已修改并验证 |
| 语法验证 | ✅ 完成 | Python语法检查通过 |
| 测试验证 | 待进行 | 需要测试各语言翻译 |
| 文档更新 | 待进行 | 等待测试通过后更新README |
---
## 10. 代码修改记录
### 修改的文件
1. `src/config.py` - 添加多语言配置
2. `src/cli.py` - 添加 `--to-lang` 参数
3. `src/internationalizer.py` - 支持动态目标语言
### 新增配置
```python
# 支持的目标语言代码映射
LANGUAGE_CODES = {
"韩文": "ko",
"法文": "fr",
"日语": "ja",
"俄语": "ru",
"西班牙语": "es",
"阿拉伯语": "ar",
"英文": "en"
}
# 支持的目标语言列表
SUPPORTED_TARGET_LANGUAGES = list(LANGUAGE_CODES.values())
```
### 新增参数
- `--to-lang`: 选择目标语言 (ko, fr, ja, ru, es, ar, en)
---
## 10. 使用说明(更新后)
### 基本用法
```bash
# 翻译为韩文
python run.py --translate --input "文档.docx" --to-lang ko
# 翻译为法文
python run.py --translate --input "文档.docx" --to-lang fr
# 翻译为日语
python run.py --translate --input "文档.docx" --to-lang ja
# 翻译为俄语
python run.py --translate --input "文档.docx" --to-lang ru
# 翻译为西班牙语
python run.py --translate --input "文档.docx" --to-lang es
# 翻译为阿拉伯语
python run.py --translate --input "文档.docx" --to-lang ar
# 翻译为英文(默认)
python run.py --translate --input "文档.docx"
```
### 查看帮助
```bash
python run.py --help
```
### 支持的语言
| 语言 | 代码 | 示例命令 |
|------|------|----------|
| 韩文 | ko | `--to-lang ko` |
| 法文 | fr | `--to-lang fr` |
| 日语 | ja | `--to-lang ja` |
| 俄语 | ru | `--to-lang ru` |
| 西班牙语 | es | `--to-lang es` |
| 阿拉伯语 | ar | `--to-lang ar` |
| 英文 | en | 默认 |
---
## 11. 后续优化
- [ ] 支持更多语种
- [ ] 添加术语库功能
- [ ] 实现置信度判断
- [ ] 支持批量文档翻译
- [ ] 添加翻译进度条
- [ ] 支持翻译记忆功能
# 需求文档
## 需求背景与目标
### 1.1 背景
当前 generate_testcases.py 脚本在执行时始终显示浏览器界面,不适用于 CI/CD 环境、服务器后台执行或批量生成场景。需要增加命令行参数控制浏览器是否以无头模式运行。
### 1.2 目标
通过命令参数控制是否展示浏览器页面。
## 2. 功能需求
- 通过命令参数控制是否展示浏览器页面。
- 参数定义:`--headless`
- 参数类型:布尔型
- 默认行为:默认为显示浏览器页面。
- 使用示例:
- 有界面模式:`python generate_testcases.py`
- 无界面模式:`python generate_testcases.py --headless`
- 功能实现:
- 有界面模式与无界面模式的实现逻辑一致,通过命令参数控制是否展示浏览器页面。
- 无界面模式下调试快照功能仍然生效。
### 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
---
*文档结束*
\ No newline at end of file
# 计划执行文档
## 需求文档
- 需求文档: `Docs/PRD/生成自动化测试用例/_PRD_控制是否展示页面_优化需求文档.md`
## 实现计划
### 1. 需求概述
`generate_testcases.py` 脚本添加命令行参数 `--headless`,控制浏览器是否以无头模式运行。
### 2. 实现步骤
#### 步骤1:导入 argparse 模块
在文件头部添加命令行参数解析模块的导入。
#### 步骤2:添加命令行参数解析函数
创建 `parse_args()` 函数,定义 `--headless` 参数:
- 参数名:`--headless`
- 类型:布尔型
- 默认值:`False`(显示浏览器)
- 帮助信息:说明无头模式的作用
#### 步骤3:修改 init_driver 方法
- 接收 headless 参数
- 根据 headless 参数值决定是否添加 `--headless` 选项到 Chrome
- 添加日志记录当前运行模式
#### 步骤4:修改 main 函数
- 调用 `parse_args()` 获取命令行参数
- 将 headless 参数传递给 TestCaseGenerator 实例
- 在启动时显示运行模式信息
### 3. 文件修改
- 文件路径: `AuxiliaryTool/TestCaseGenerator/generate_testcases.py`
- 修改位置:
- 第8行附近:添加 `argparse` 导入
- `TestCaseGenerator` 类:修改 `__init__` 方法接收 headless 参数
- `init_driver` 方法:添加无头模式逻辑
- 新增 `parse_args()` 函数
- `main()` 函数:集成参数解析
### 4. 代码规范遵循
- [x] 所有代码添加中文注释
- [x] 新功能不影响原有功能(默认行为保持显示浏览器)
- [x] 添加详细的日志记录(INFO级别)
### 5. 测试验证
- [ ] 有界面模式:`python generate_testcases.py`(不传参数)
- [ ] 无界面模式:`python generate_testcases.py --headless`
- [ ] 验证调试快照功能在无头模式下仍生效
### 6. 预期输出
```
============================================================
自动化测试用例生成器
============================================================
运行模式: 有界面模式
✓ 加载系统配置: 2 个
✓ 加载模块配置: 2 个
✓ 浏览器驱动初始化完成
...
```
或无界面模式:
```
============================================================
自动化测试用例生成器
============================================================
运行模式: 无界面模式
✓ 加载系统配置: 2 个
✓ 加载模块配置: 2 个
✓ 浏览器驱动初始化完成(无头模式)
...
```
---
## 执行记录
### 任务清单
- [ ] Step 1: 添加 argparse 导入
- [ ] Step 2: 添加 parse_args() 函数
- [ ] Step 3: 修改 TestCaseGenerator.__init__ 接收 headless 参数
- [ ] Step 4: 修改 init_driver 方法实现无头模式
- [ ] Step 5: 修改 main 函数集成参数解析
- [ ] Step 6: 测试验证
---
*文档创建时间:2026-03-11*
# 生成自动化测试用例
## 代码路径
- 代码路径:[AuxiliaryTool/FunctionalTestReportGeneration]
## 功能需求
### 功能目标
**目标:** 通过测试用例+BUG列表+功能测试报告模板生成项目功能测试报告。
### 需求描述
#### 模板文件获取
- 功能测试报告模板:[AuxiliaryTool/FunctionalTestReportGeneration/config/功能测试报告模板.md][AuxiliaryTool/FunctionalTestReportGeneration/config/功能测试报告模板.docx]
- BUG列表数据模板:[AuxiliaryTool/FunctionalTestReportGeneration/config/BUG列表模板数据.xlsx]
- 功能测试用例模板: [AuxiliaryTool/FunctionalTestReportGeneration/config/功能测试用例模板.xlsx]
#### 测试数据获取
-[AuxiliaryTool/FunctionalTestReportGeneration/testcases]路径下获取测试用例与BUG列表数据,可通过用户输入指定。
#### 测试报告生成
- 根据测试执行结果,自动填充功能测试报告模板,生成完整的测试报告。
- 根据BUG列表数据,自动统计BUG数量和等级分布,并填充到测试报告中。
- 根据功能测试用例,自动统计用例执行情况,并填充到测试报告中。
### 测试报告生成逻辑
#### 交互方式
- 程序交互方式:通过命令行窗口、命令行参数进行交互输入执行。
#### 数据格式获取
- 数据格式确认:通过读取BUG列表模板文件与功能测试用例模板文件,确认数据格式。
- 数据获取:通过用户输入指定测试数据路径,获取测试数据,测试用例文件与BUG列表文件。测试用例文件数据从第4行开始读取,BUG列表数据从第2行开始读取。
- 批量测试执行(暂不实现):通过批量执行功能测试用例,批量生成功能测试报告。
- 项目名称获取:通过读取BUG列表中'项目名称'字段,获取项目名称。
#### 数据定义
- 测试用例文件中定义用例执行结果状态分为:通过、失败、未验证与未开发。
- BUG列表文件中定义BUG状态分为:激活、已解决与已关闭。
- 日期格式定义:日期格式统一为YYYY年MM月DD日。
#### 统计与关联规则
- 用例-BUG关联规则:通过获取BUG列表复现步骤中的用例编号,关联BUG列表数据,获取关联的BUG信息。
- 遗留BUG定义:BUG列表文件中,状态为激活与已解决的BUG定义为遗留BUG。
- 通过率计算规则:通过用例数量 / 总用例数量 * 100%,保留两位小数。
#### 报告内容
- 自动填充规则:测试概览、被测系统信息、测试结论、测试建议、测试环境信息为空,在报告中显示“未填写”,其余为必填字段。
- 图标绘制规则:绘制BUG等级分布、用例执行结果分布、用例通过率图表,使用matplotlib库进行图表绘制。
#### 文档输出规则
- 报告输出格式:输出Word和md文档格式。
- 报告输出位置:输出到[AuxiliaryTool/FunctionalTestReportGeneration/reports]
- 报告命名规则:{项目名称}_功能测试报告_{日期}.docx或{项目名称}_功能测试报告_{日期}.md。
- 报告编号规则:{项目名称}-{日期}
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
---
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论