generate_test_data 源代码

"""
生成测试数据脚本
复制 Ren'py.xlsx 并填充 1000 行随机测试数据
"""
import random
import shutil
from pathlib import Path
from openpyxl import load_workbook
from openpyxl.worksheet.datavalidation import DataValidation

[文档] def generate_test_data(): """生成测试数据""" # 源文件和目标文件 source_file = Path("input/Ren'py.xlsx") target_file = Path("input/Ren'py_2.xlsx") # 复制文件 print(f"复制文件: {source_file} -> {target_file}") shutil.copy(source_file, target_file) # 打开目标文件 wb = load_workbook(target_file) ws = wb.active # 获取参数表工作表(用于获取数据验证列表) param_ws = wb["参数表"] if "参数表" in wb.sheetnames else None # 读取参数表的列名和数据 param_data = {} if param_ws: for col_idx in range(1, param_ws.max_column + 1): header = param_ws.cell(row=1, column=col_idx).value if header: values = [] for row_idx in range(2, param_ws.max_row + 1): val = param_ws.cell(row=row_idx, column=col_idx).value if val: values.append(str(val)) param_data[header] = values print(f"从参数表读取到 {len(param_data)} 个参数类型") # 获取主工作表的表头 headers = [] for col_idx in range(1, ws.max_column + 1): header = ws.cell(row=1, column=col_idx).value if header: headers.append((col_idx, header)) print(f"主工作表有 {len(headers)} 列") # 生成 1000 行随机数据 start_row = ws.max_row + 1 print(f"从第 {start_row} 行开始生成 1000 行数据...") for row_num in range(start_row, start_row + 1000): for col_idx, header in headers: # 根据列名生成合适的随机数据 if header == "Index": # Index 列递增 value = row_num - 1 elif header == "Ignore": # Ignore 列保持为空 value = "" elif header in param_data and param_data[header]: # 从参数表中随机选择 value = random.choice(param_data[header]) elif header == "Speaker": value = random.choice(["角色A", "角色B", "角色C", "旁白", ""]) elif header == "Text": value = f"这是第{row_num}行的测试文本内容。" elif header in ["Wait", "Visible", "CharAnimWait"]: value = random.choice(["", "true", "false"]) elif header in ["Volume", "Scale", "Time"]: value = random.choice(["", "0.5", "1.0", "1.5"]) elif header in ["Position"]: value = random.choice(["", "0.3", "0.5", "0.7"]) else: # 其他列随机留空或填充 value = "" if random.random() > 0.3 else f"test_{row_num}" ws.cell(row=row_num, column=col_idx, value=value) if row_num % 100 == 0: print(f" 已生成 {row_num - start_row + 1} 行...") # 保存文件 print(f"保存文件: {target_file}") wb.save(target_file) wb.close() print(f"完成!生成了 1000 行测试数据") print(f"文件总行数: {start_row + 1000 - 1} 行(含表头)")
if __name__ == "__main__": generate_test_data()