增删改查完成
This commit is contained in:
290
run-api-tests.sh
Normal file
290
run-api-tests.sh
Normal file
@@ -0,0 +1,290 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 利率定价流程 API 完整测试脚本
|
||||
# 自动登录获取 token 并执行所有测试用例
|
||||
|
||||
BASE_URL="http://localhost:8080"
|
||||
TOKEN=""
|
||||
|
||||
# 颜色定义
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 测试结果统计
|
||||
TOTAL_TESTS=0
|
||||
PASSED_TESTS=0
|
||||
FAILED_TESTS=0
|
||||
|
||||
# 测试结果记录
|
||||
declare -a TEST_RESULTS
|
||||
|
||||
echo -e "${BLUE}====================================${NC}"
|
||||
echo -e "${BLUE} 利率定价流程 API 测试套件${NC}"
|
||||
echo -e "${BLUE}====================================${NC}"
|
||||
echo ""
|
||||
|
||||
# 步骤 1: 获取 Token
|
||||
echo -e "${YELLOW}[步骤 1] 获取测试 Token${NC}"
|
||||
echo "-----------------------------------"
|
||||
LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/login/test" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username":"admin","password":"admin123"}')
|
||||
|
||||
# 解析 token
|
||||
TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
|
||||
|
||||
if [ -z "$TOKEN" ]; then
|
||||
echo -e "${RED}✗ 登录失败,无法获取 token${NC}"
|
||||
echo "响应: $LOGIN_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}✓ 登录成功${NC}"
|
||||
echo "Token: ${TOKEN:0:50}..."
|
||||
echo ""
|
||||
|
||||
# 测试函数
|
||||
test_api() {
|
||||
local method=$1
|
||||
local url=$2
|
||||
local data=$3
|
||||
local description=$4
|
||||
local expected_code=${5:-200}
|
||||
|
||||
TOTAL_TESTS=$((TOTAL_TESTS + 1))
|
||||
echo -n "[$TOTAL_TESTS] 测试: $description ... "
|
||||
|
||||
if [ "$method" = "GET" ]; then
|
||||
response=$(curl -s -X GET "$BASE_URL$url" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json")
|
||||
else
|
||||
response=$(curl -s -X "$method" "$BASE_URL$url" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$data")
|
||||
fi
|
||||
|
||||
# 检查响应
|
||||
actual_code=$(echo "$response" | grep -o '"code":[0-9]*' | cut -d':' -f2)
|
||||
|
||||
if [ "$actual_code" = "$expected_code" ]; then
|
||||
echo -e "${GREEN}✓ 通过${NC}"
|
||||
PASSED_TESTS=$((PASSED_TESTS + 1))
|
||||
TEST_RESULTS+=("✓ $description")
|
||||
else
|
||||
echo -e "${RED}✗ 失败 (期望: $expected_code, 实际: $actual_code)${NC}"
|
||||
FAILED_TESTS=$((FAILED_TESTS + 1))
|
||||
TEST_RESULTS+=("✗ $description - 期望码: $expected_code, 实际: $actual_code")
|
||||
echo " 响应: $response"
|
||||
fi
|
||||
}
|
||||
|
||||
# 步骤 2: 执行测试用例
|
||||
echo -e "${YELLOW}[步骤 2] 执行测试用例${NC}"
|
||||
echo "-----------------------------------"
|
||||
echo ""
|
||||
|
||||
# ====== 功能测试 ======
|
||||
echo -e "${BLUE}【功能测试】${NC}"
|
||||
|
||||
# 测试 1: 发起利率定价流程 - 个人客户信用贷款
|
||||
test_api "POST" "/loanPricing/workflow/create" '{
|
||||
"orgCode": "931000",
|
||||
"runType": "1",
|
||||
"custIsn": "CUST20250119001",
|
||||
"custType": "个人",
|
||||
"guarType": "信用",
|
||||
"midPerQuickPay": "true",
|
||||
"midPerEleDdc": "false",
|
||||
"midEntEleDdc": "false",
|
||||
"midEntWaterDdc": "false",
|
||||
"applyAmt": "50000",
|
||||
"isCleanEnt": "false",
|
||||
"hasSettleAcct": "true",
|
||||
"isManufacturing": "false",
|
||||
"isAgriGuar": "false",
|
||||
"isTaxA": "false",
|
||||
"isAgriLeading": "false",
|
||||
"loanPurpose": "consumer",
|
||||
"bizProof": "true",
|
||||
"collType": "一类",
|
||||
"collThirdParty": "false",
|
||||
"loanRate": "4.35",
|
||||
"custName": "张三",
|
||||
"idType": "身份证",
|
||||
"isInclusiveFinance": "true"
|
||||
}' "发起流程-个人客户信用贷款"
|
||||
|
||||
# 测试 2: 发起利率定价流程 - 企业客户抵押贷款
|
||||
test_api "POST" "/loanPricing/workflow/create" '{
|
||||
"orgCode": "931000",
|
||||
"runType": "1",
|
||||
"custIsn": "CUST20250119002",
|
||||
"custType": "企业",
|
||||
"guarType": "抵押",
|
||||
"applyAmt": "500000",
|
||||
"isCleanEnt": "true",
|
||||
"hasSettleAcct": "true",
|
||||
"isManufacturing": "true",
|
||||
"isTaxA": "true",
|
||||
"loanPurpose": "business",
|
||||
"collType": "一线",
|
||||
"collThirdParty": "false",
|
||||
"loanRate": "3.85",
|
||||
"custName": "测试科技有限公司",
|
||||
"idType": "统一社会信用代码",
|
||||
"isInclusiveFinance": "true"
|
||||
}' "发起流程-企业客户抵押贷款"
|
||||
|
||||
# 测试 3: 发起利率定价流程 - 农业担保贷款
|
||||
test_api "POST" "/loanPricing/workflow/create" '{
|
||||
"orgCode": "931000",
|
||||
"runType": "1",
|
||||
"custIsn": "CUST20250119003",
|
||||
"custType": "企业",
|
||||
"guarType": "保证",
|
||||
"applyAmt": "300000",
|
||||
"isAgriGuar": "true",
|
||||
"isAgriLeading": "true",
|
||||
"loanPurpose": "business",
|
||||
"loanRate": "4.15",
|
||||
"custName": "绿源农业合作社",
|
||||
"idType": "统一社会信用代码",
|
||||
"isInclusiveFinance": "true"
|
||||
}' "发起流程-农业担保贷款"
|
||||
|
||||
# 测试 4: 发起利率定价流程 - 质押贷款
|
||||
test_api "POST" "/loanPricing/workflow/create" '{
|
||||
"orgCode": "931000",
|
||||
"runType": "1",
|
||||
"custIsn": "CUST20250119004",
|
||||
"custType": "个人",
|
||||
"guarType": "质押",
|
||||
"applyAmt": "100000",
|
||||
"loanPurpose": "consumer",
|
||||
"collType": "二类",
|
||||
"loanRate": "4.25",
|
||||
"custName": "李四",
|
||||
"idType": "身份证",
|
||||
"isInclusiveFinance": "false"
|
||||
}' "发起流程-个人客户质押贷款"
|
||||
|
||||
# 测试 5: 查询流程列表 - 默认分页
|
||||
test_api "GET" "/loanPricing/workflow/list?pageNum=1&pageSize=10" "" "查询流程列表-默认分页"
|
||||
|
||||
# 测试 6: 查询流程列表 - 筛选个人客户
|
||||
test_api "GET" "/loanPricing/workflow/list?pageNum=1&pageSize=10&custType=个人" "" "查询流程列表-筛选个人客户"
|
||||
|
||||
# 测试 7: 查询流程列表 - 筛选企业客户
|
||||
test_api "GET" "/loanPricing/workflow/list?pageNum=1&pageSize=10&custType=企业" "" "查询流程列表-筛选企业客户"
|
||||
|
||||
# 测试 8: 查询流程列表 - 按客户名称搜索
|
||||
test_api "GET" "/loanPricing/workflow/list?pageNum=1&pageSize=10&custName=张三" "" "查询流程列表-搜索张三"
|
||||
|
||||
# 测试 9: 查询流程列表 - 按担保方式筛选
|
||||
test_api "GET" "/loanPricing/workflow/list?pageNum=1&pageSize=10&guarType=信用" "" "查询流程列表-筛选信用贷款"
|
||||
|
||||
# 测试 10: 查询流程详情
|
||||
test_api "GET" "/loanPricing/workflow/CUST20250119001" "" "查询流程详情-CUST20250119001"
|
||||
|
||||
# ====== 异常测试 ======
|
||||
echo ""
|
||||
echo -e "${BLUE}【异常测试】${NC}"
|
||||
|
||||
# 测试 11: 必填字段缺失 - 客户内码为空
|
||||
test_api "POST" "/loanPricing/workflow/create" '{
|
||||
"custType": "个人",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "50000",
|
||||
"loanRate": "4.35"
|
||||
}' "异常测试-客户内码为空" 500
|
||||
|
||||
# 测试 12: 必填字段缺失 - 贷款利率为空
|
||||
test_api "POST" "/loanPricing/workflow/create" '{
|
||||
"custIsn": "TEST001",
|
||||
"custType": "个人",
|
||||
"guarType": "信用",
|
||||
"applyAmt": "50000"
|
||||
}' "异常测试-贷款利率为空" 500
|
||||
|
||||
# 测试 13: 查询不存在的流程
|
||||
test_api "GET" "/loanPricing/workflow/NOTEXIST123" "" "异常测试-查询不存在的流程" 500
|
||||
|
||||
# 步骤 3: 生成测试报告
|
||||
echo ""
|
||||
echo -e "${YELLOW}[步骤 3] 测试结果统计${NC}"
|
||||
echo "-----------------------------------"
|
||||
echo ""
|
||||
|
||||
# 计算通过率
|
||||
if [ $TOTAL_TESTS -gt 0 ]; then
|
||||
PASS_RATE=$((PASSED_TESTS * 100 / TOTAL_TESTS))
|
||||
else
|
||||
PASS_RATE=0
|
||||
fi
|
||||
|
||||
echo "总测试数: $TOTAL_TESTS"
|
||||
echo -e "通过: ${GREEN}$PASSED_TESTS${NC}"
|
||||
echo -e "失败: ${RED}$FAILED_TESTS${NC}"
|
||||
echo "通过率: $PASS_RATE%"
|
||||
echo ""
|
||||
|
||||
# 详细结果
|
||||
echo "详细测试结果:"
|
||||
echo "-----------------------------------"
|
||||
for result in "${TEST_RESULTS[@]}"; do
|
||||
if [[ $result == ✓* ]]; then
|
||||
echo -e "${GREEN}$result${NC}"
|
||||
else
|
||||
echo -e "${RED}$result${NC}"
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
# 生成测试报告文件
|
||||
REPORT_FILE="api-test-report-$(date +%Y%m%d%H%M%S).txt"
|
||||
echo "生成测试报告: $REPORT_FILE"
|
||||
|
||||
cat > "$REPORT_FILE" << EOF
|
||||
利率定价流程 API 测试报告
|
||||
====================================
|
||||
|
||||
测试时间: $(date '+%Y-%m-%d %H:%M:%S')
|
||||
测试环境: $BASE_URL
|
||||
测试账号: admin
|
||||
|
||||
测试统计
|
||||
--------
|
||||
总测试数: $TOTAL_TESTS
|
||||
通过数: $PASSED_TESTS
|
||||
失败数: $FAILED_TESTS
|
||||
通过率: $PASS_RATE%
|
||||
|
||||
测试用例详情
|
||||
--------
|
||||
EOF
|
||||
|
||||
for result in "${TEST_RESULTS[@]}"; do
|
||||
echo "$result" >> "$REPORT_FILE"
|
||||
done
|
||||
|
||||
echo "" >> "$REPORT_FILE"
|
||||
echo "====================================" >> "$REPORT_FILE"
|
||||
echo "测试结束" >> "$REPORT_FILE"
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}====================================${NC}"
|
||||
echo -e "${BLUE} 测试完成${NC}"
|
||||
echo -e "${BLUE}====================================${NC}"
|
||||
echo "测试报告已保存到: $REPORT_FILE"
|
||||
|
||||
# 返回退出码
|
||||
if [ $FAILED_TESTS -gt 0 ]; then
|
||||
exit 1
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
Reference in New Issue
Block a user