Files
rlz/test_api.sh

161 lines
5.2 KiB
Bash
Raw Permalink Normal View History

2026-01-26 15:02:59 +08:00
#!/bin/bash
# 后台API接口测试脚本
echo "=========================================="
echo "陪诊系统后台API接口测试"
echo "=========================================="
echo ""
# 服务器地址配置
SERVER_URL="http://101.43.95.130:8039"
# 如果公网无法访问,使用本地测试
# SERVER_URL="http://localhost:8039"
# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 测试结果统计
TOTAL=0
PASSED=0
FAILED=0
# 测试函数
test_api() {
local name=$1
local method=$2
local url=$3
local data=$4
local need_auth=$5
TOTAL=$((TOTAL + 1))
echo -n "测试 $TOTAL: $name ... "
# 构建curl命令
if [ "$method" = "GET" ]; then
if [ "$need_auth" = "true" ]; then
response=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X GET "$url" \
-H "Authorization: Bearer test_token" \
-H "Content-Type: application/json" 2>&1)
else
response=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X GET "$url" \
-H "Content-Type: application/json" 2>&1)
fi
else
if [ "$need_auth" = "true" ]; then
response=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X POST "$url" \
-H "Authorization: Bearer test_token" \
-H "Content-Type: application/json" \
-d "$data" 2>&1)
else
response=$(curl -s -w "\nHTTP_CODE:%{http_code}" -X POST "$url" \
-H "Content-Type: application/json" \
-d "$data" 2>&1)
fi
fi
# 提取HTTP状态码
http_code=$(echo "$response" | grep "HTTP_CODE" | cut -d: -f2)
body=$(echo "$response" | sed '/HTTP_CODE/d')
# 判断结果
if [ "$http_code" = "200" ] || [ "$http_code" = "401" ] || [ "$http_code" = "403" ]; then
# 200表示成功401/403表示接口存在但需要认证也算接口正常
echo -e "${GREEN}✓ 通过${NC} (HTTP $http_code)"
PASSED=$((PASSED + 1))
# 显示响应内容的前100个字符
if [ -n "$body" ]; then
echo " 响应: $(echo "$body" | head -c 100)..."
fi
else
echo -e "${RED}✗ 失败${NC} (HTTP $http_code)"
FAILED=$((FAILED + 1))
if [ -n "$body" ]; then
echo " 错误: $(echo "$body" | head -c 100)..."
fi
fi
echo ""
}
# 开始测试
echo "服务器地址: $SERVER_URL"
echo "开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
echo "----------------------------------------"
echo "1. 基础接口测试(无需认证)"
echo "----------------------------------------"
# 测试1: 首页接口
test_api "首页接口" "GET" "$SERVER_URL/" "false"
# 测试2: 验证码接口
test_api "验证码接口" "GET" "$SERVER_URL/captchaImage" "false"
# 测试3: 医院列表接口(需要认证,但可以测试接口是否存在)
test_api "医院列表接口" "GET" "$SERVER_URL/system/hospital/list" "" "true"
echo "----------------------------------------"
echo "2. 登录相关接口测试"
echo "----------------------------------------"
# 测试4: 微信登录接口(需要真实参数,但可以测试接口是否存在)
test_api "微信登录接口" "POST" "$SERVER_URL/weixinLogin" \
'{"wxcode":"test","encryptedData":"test","iv":"test"}' "false"
# 测试5: 获取用户Token接口
test_api "获取用户Token接口" "GET" "$SERVER_URL/getUserToken?phonenumber=13800138000" "" "false"
echo "----------------------------------------"
echo "3. 系统配置接口测试"
echo "----------------------------------------"
# 测试6: 获取价格配置
test_api "价格配置接口" "GET" "$SERVER_URL/system/config/configKey/price" "" "true"
# 测试7: 获取价格类型配置
test_api "价格类型配置接口" "GET" "$SERVER_URL/system/config/configKey/priceType" "" "true"
echo "----------------------------------------"
echo "4. 订单相关接口测试"
echo "----------------------------------------"
# 测试8: 订单列表接口
test_api "订单列表接口" "GET" "$SERVER_URL/system/view/list" "" "true"
# 测试9: 创建订单接口(需要完整参数,但可以测试接口是否存在)
test_api "创建订单接口" "POST" "$SERVER_URL/system/order/insertOrderPz" \
'{"bId":104,"cId":1,"yuguMoney":"200","yuliu9":"2","yuliu10":"1"}' "true"
echo "----------------------------------------"
echo "5. 用户相关接口测试"
echo "----------------------------------------"
# 测试10: 用户列表接口
test_api "用户列表接口" "GET" "$SERVER_URL/system/user/list" "" "true"
# 测试11: 获取用户信息接口
test_api "获取用户信息接口" "GET" "$SERVER_URL/getInfo" "" "true"
echo ""
echo "=========================================="
echo "测试结果统计"
echo "=========================================="
echo "总测试数: $TOTAL"
echo -e "通过: ${GREEN}$PASSED${NC}"
echo -e "失败: ${RED}$FAILED${NC}"
echo "通过率: $(( PASSED * 100 / TOTAL ))%"
echo ""
echo "结束时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
# 判断整体结果
if [ $FAILED -eq 0 ]; then
echo -e "${GREEN}所有接口测试通过!${NC}"
exit 0
else
echo -e "${YELLOW}部分接口测试失败,请检查服务器状态和网络连接${NC}"
exit 1
fi