修改目录

This commit is contained in:
wkc
2026-03-03 16:14:16 +08:00
parent c8b041f4b9
commit 521bb80b2f
438 changed files with 15313 additions and 21773 deletions

View File

@@ -0,0 +1,308 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
中介导入唯一性校验测试脚本
测试场景:
1. 个人中介导入 - 证件号重复导入(非更新模式)应失败
2. 个人中介导入 - 证件号重复导入(更新模式)应成功
3. 机构中介导入 - 统一社会信用代码重复导入(非更新模式)应失败
4. 机构中介导入 - 统一社会信用代码重复导入(更新模式)应成功
"""
import requests
import json
import time
from datetime import datetime
# 配置
BASE_URL = "http://localhost:8080"
USERNAME = "admin"
PASSWORD = "admin123"
# 全局变量存储token
token = None
def login():
"""登录获取token"""
global token
url = f"{BASE_URL}/login/test"
data = {
"username": USERNAME,
"password": PASSWORD
}
response = requests.post(url, data=data)
result = response.json()
if result.get("code") == 200:
token = result.get("token")
print(f"✓ 登录成功获取token: {token[:20]}...")
return True
else:
print(f"✗ 登录失败: {result}")
return False
def get_headers():
"""获取带token的请求头"""
return {
"Authorization": f"Bearer {token}"
}
def test_import_person_without_update(file_path, cert_no):
"""
测试场景1: 个人中介导入(非更新模式)- 证件号重复
期望:导入失败,提示证件号已存在
"""
print(f"\n{'='*60}")
print(f"测试场景1: 个人中介导入(非更新模式)- 证件号 {cert_no} 重复")
print(f"{'='*60}")
url = f"{BASE_URL}/dpc/intermediary/importPersonData"
files = {"file": open(file_path, "rb")}
data = {"updateSupport": "false"}
response = requests.post(url, files=files, data=data, headers=get_headers())
result = response.json()
print(f"响应状态码: {response.status_code}")
print(f"响应内容: {json.dumps(result, ensure_ascii=False, indent=2)}")
# 验证结果
if result.get("code") == 500:
if "已存在" in result.get("msg", ""):
print(f"✓ 测试通过:系统正确拒绝了重复的证件号")
return True
else:
print(f"✗ 测试失败:错误信息不符合预期")
return False
else:
print(f"✗ 测试失败:系统应该拒绝重复的证件号")
return False
def test_import_person_with_update(file_path, cert_no):
"""
测试场景2: 个人中介导入(更新模式)- 证件号重复
期望:导入成功,更新已存在的记录
"""
print(f"\n{'='*60}")
print(f"测试场景2: 个人中介导入(更新模式)- 证件号 {cert_no} 重复")
print(f"{'='*60}")
url = f"{BASE_URL}/dpc/intermediary/importPersonData"
files = {"file": open(file_path, "rb")}
data = {"updateSupport": "true"}
response = requests.post(url, files=files, data=data, headers=get_headers())
result = response.json()
print(f"响应状态码: {response.status_code}")
print(f"响应内容: {json.dumps(result, ensure_ascii=False, indent=2)}")
# 验证结果
if result.get("code") == 200:
print(f"✓ 测试通过:系统成功更新了已存在的记录")
return True
else:
print(f"✗ 测试失败:系统应该允许更新模式")
return False
def test_import_entity_without_update(file_path, credit_code):
"""
测试场景3: 机构中介导入(非更新模式)- 统一社会信用代码重复
期望:导入失败,提示统一社会信用代码已存在
"""
print(f"\n{'='*60}")
print(f"测试场景3: 机构中介导入(非更新模式)- 统一社会信用代码 {credit_code} 重复")
print(f"{'='*60}")
url = f"{BASE_URL}/dpc/intermediary/importEntityData"
files = {"file": open(file_path, "rb")}
data = {"updateSupport": "false"}
response = requests.post(url, files=files, data=data, headers=get_headers())
result = response.json()
print(f"响应状态码: {response.status_code}")
print(f"响应内容: {json.dumps(result, ensure_ascii=False, indent=2)}")
# 验证结果
if result.get("code") == 500:
if "已存在" in result.get("msg", ""):
print(f"✓ 测试通过:系统正确拒绝了重复的统一社会信用代码")
return True
else:
print(f"✗ 测试失败:错误信息不符合预期")
return False
else:
print(f"✗ 测试失败:系统应该拒绝重复的统一社会信用代码")
return False
def test_import_entity_with_update(file_path, credit_code):
"""
测试场景4: 机构中介导入(更新模式)- 统一社会信用代码重复
期望:导入成功,更新已存在的记录
"""
print(f"\n{'='*60}")
print(f"测试场景4: 机构中介导入(更新模式)- 统一社会信用代码 {credit_code} 重复")
print(f"{'='*60}")
url = f"{BASE_URL}/dpc/intermediary/importEntityData"
files = {"file": open(file_path, "rb")}
data = {"updateSupport": "true"}
response = requests.post(url, files=files, data=data, headers=get_headers())
result = response.json()
print(f"响应状态码: {response.status_code}")
print(f"响应内容: {json.dumps(result, ensure_ascii=False, indent=2)}")
# 验证结果
if result.get("code") == 200:
print(f"✓ 测试通过:系统成功更新了已存在的记录")
return True
else:
print(f"✗ 测试失败:系统应该允许更新模式")
return False
def create_test_person_excel(file_path, cert_no, name="测试用户"):
"""创建测试用的个人中介Excel文件"""
import openpyxl
from openpyxl.styles import Protection
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "个人中介黑名单"
# 表头
headers = ["姓名", "证件号码", "人员类型", "人员子类型", "性别", "证件类型", "手机号", "微信号",
"联系地址", "所在公司", "职位", "关联人员ID", "关联关系", "备注"]
ws.append(headers)
# 添加测试数据
ws.append([name, cert_no, "中介", "本人", "", "身份证", "13800138000",
"test_wxh", "测试地址", "测试公司", "测试职位", "", "", "测试备注"])
wb.save(file_path)
print(f"✓ 创建测试Excel文件: {file_path}")
def create_test_entity_excel(file_path, credit_code, name="测试机构"):
"""创建测试用的机构中介Excel文件"""
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "机构中介黑名单"
# 表头
headers = ["机构名称", "统一社会信用代码", "主体类型", "企业性质", "行业分类", "所属行业", "成立日期",
"注册地址", "法定代表人", "法定代表人证件类型", "法定代表人证件号码", "股东1", "股东2",
"股东3", "股东4", "股东5", "备注"]
ws.append(headers)
# 添加测试数据
ws.append([name, credit_code, "有限责任公司", "民企", "金融业", "银行业", "2020-01-01",
"北京市测试区测试路123号", "张三", "身份证", "110101199001011234",
"股东A", "股东B", "股东C", "股东D", "股东E", "测试备注"])
wb.save(file_path)
print(f"✓ 创建测试Excel文件: {file_path}")
def main():
"""主测试流程"""
print(f"\n{'#'*60}")
print(f"# 中介导入唯一性校验测试")
print(f"# 测试时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print(f"{'#'*60}")
# 登录
if not login():
return
# 测试参数
test_cert_no = f"TEST{int(time.time())}" # 生成唯一测试证件号
test_credit_code = f"91{int(time.time())}001" # 生成唯一测试统一社会信用代码
test_results = []
# 准备测试文件
person_file = "test_person_uniqueness.xlsx"
entity_file = "test_entity_uniqueness.xlsx"
# ========== 场景1: 先导入一条个人数据 ==========
print(f"\n{'='*60}")
print(f"准备步骤: 首次导入个人中介数据(证件号: {test_cert_no}")
print(f"{'='*60}")
create_test_person_excel(person_file, test_cert_no)
url = f"{BASE_URL}/dpc/intermediary/importPersonData"
files = {"file": open(person_file, "rb")}
data = {"updateSupport": "false"}
response = requests.post(url, files=files, data=data, headers=get_headers())
result = response.json()
if result.get("code") == 200:
print(f"✓ 首次导入成功")
else:
print(f"✗ 首次导入失败: {result}")
return
# ========== 场景1: 非更新模式导入重复个人数据 ==========
test_results.append(test_import_person_without_update(person_file, test_cert_no))
# ========== 场景2: 更新模式导入重复个人数据 ==========
test_results.append(test_import_person_with_update(person_file, test_cert_no))
# ========== 准备: 首次导入机构数据 ==========
print(f"\n{'='*60}")
print(f"准备步骤: 首次导入机构中介数据(统一社会信用代码: {test_credit_code}")
print(f"{'='*60}")
create_test_entity_excel(entity_file, test_credit_code)
url = f"{BASE_URL}/dpc/intermediary/importEntityData"
files = {"file": open(entity_file, "rb")}
data = {"updateSupport": "false"}
response = requests.post(url, files=files, data=data, headers=get_headers())
result = response.json()
if result.get("code") == 200:
print(f"✓ 首次导入成功")
else:
print(f"✗ 首次导入失败: {result}")
return
# ========== 场景3: 非更新模式导入重复机构数据 ==========
test_results.append(test_import_entity_without_update(entity_file, test_credit_code))
# ========== 场景4: 更新模式导入重复机构数据 ==========
test_results.append(test_import_entity_with_update(entity_file, test_credit_code))
# ========== 输出测试报告 ==========
print(f"\n{'='*60}")
print(f"测试报告汇总")
print(f"{'='*60}")
print(f"测试场景总数: {len(test_results)}")
print(f"通过数量: {sum(test_results)}")
print(f"失败数量: {len(test_results) - sum(test_results)}")
if all(test_results):
print(f"\n✓ 所有测试通过!")
else:
print(f"\n✗ 部分测试失败,请查看上方详细日志")
print(f"\n测试完成时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
if __name__ == "__main__":
main()