95 lines
3.5 KiB
Python
95 lines
3.5 KiB
Python
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()
|