Files
ccdi/doc/test-scripts/test_employee_duplicate_detection.py

95 lines
3.5 KiB
Python
Raw Normal View History

import requests
import json
# 配置
BASE_URL = "http://localhost:8080"
LOGIN_URL = f"{BASE_URL}/login/test"
IMPORT_URL = f"{BASE_URL}/ccdi/employee/importData"
# 测试账号
username = "admin"
password = "admin123"
# 登录获取token
def login():
"""登录获取token"""
print("正在登录...")
response = requests.post(LOGIN_URL, data={
"username": username,
"password": password
})
if response.status_code == 200:
result = response.json()
if result.get("code") == 200:
token = result.get("token")
print(f"登录成功,获取到token: {token[:20]}...")
return token
else:
print(f"登录失败: {result.get('msg')}")
exit(1)
else:
print(f"登录请求失败: {response.status_code}")
exit(1)
# 准备测试Excel文件(需要手动准备)
def test_duplicate_detection():
"""测试Excel内双字段重复检测"""
token = login()
headers = {
"Authorization": f"Bearer {token}"
}
# 测试场景1: 柜员号在Excel内重复
print("\n=== 测试场景1: 柜员号在Excel内重复 ===")
print("准备包含重复柜员号的Excel文件...")
print("期望结果: 第二条记录应该被标记为失败,错误信息包含'柜员号[XXX]在导入文件中重复'")
# 测试场景2: 身份证号在Excel内重复
print("\n=== 测试场景2: 身份证号在Excel内重复 ===")
print("准备包含重复身份证号的Excel文件...")
print("期望结果: 第二条记录应该被标记为失败,错误信息包含'身份证号[XXX]在导入文件中重复'")
# 测试场景3: 柜员号和身份证号同时重复
print("\n=== 测试场景3: 柜员号和身份证号同时重复 ===")
print("准备包含同时重复柜员号和身份证号的Excel文件...")
print("期望结果: 两条记录都应该被标记为失败")
# 测试场景4: 柜员号在数据库中存在
print("\n=== 测试场景4: 柜员号在数据库中存在 ===")
print("准备包含已存在柜员号的Excel文件...")
print("期望结果: 如果启用更新支持,则更新;否则报错'柜员号已存在且未启用更新支持'")
# 测试场景5: 身份证号在数据库中存在
print("\n=== 测试场景5: 身份证号在数据库中存在 ===")
print("准备包含已存在身份证号的Excel文件...")
print("期望结果: 如果是新增(柜员号不存在),则报错'该身份证号已存在'")
# 测试场景6: 正常导入
print("\n=== 测试场景6: 正常导入(无重复) ===")
print("准备无重复的Excel文件...")
print("期望结果: 所有记录都应该成功导入")
print("\n=== 测试说明 ===")
print("请手动准备Excel文件,使用以下接口测试:")
print(f"POST {IMPORT_URL}")
print("Headers:")
print(f" Authorization: Bearer {token[:20]}...")
print("Body (multipart/form-data):")
print(" file: [Excel文件]")
print(" updateSupport: [true/false]")
print("\n=== 查询导入状态 ===")
print("导入后可以使用以下接口查询状态:")
STATUS_URL = f"{BASE_URL}/ccdi/employee/importStatus"
print(f"GET {STATUS_URL}?taskId={{taskId}}")
print("\n=== 查询失败记录 ===")
print("导入失败时可以使用以下接口查询失败记录:")
FAILURES_URL = f"{BASE_URL}/ccdi/employee/importFailures"
print(f"GET {FAILURES_URL}?taskId={{taskId}}")
if __name__ == "__main__":
test_duplicate_detection()