Files
rlz/test_api.sh
2026-01-26 15:02:59 +08:00

161 lines
5.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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