Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

183 rindas
6.1 KiB

  1. #!/bin/bash
  2. # 渠道定价功能端到端测试脚本
  3. # 使用方法: ./test_channel_pricing.sh <admin_token>
  4. BASE_URL="http://localhost:3000"
  5. ADMIN_TOKEN="${1:-}"
  6. if [ -z "$ADMIN_TOKEN" ]; then
  7. echo "错误: 请提供管理员 token"
  8. echo "使用方法: ./test_channel_pricing.sh <admin_token>"
  9. exit 1
  10. fi
  11. # 颜色输出
  12. RED='\033[0;31m'
  13. GREEN='\033[0;32m'
  14. YELLOW='\033[1;33m'
  15. NC='\033[0m' # No Color
  16. pass_count=0
  17. fail_count=0
  18. check_success() {
  19. local result="$1"
  20. local test_name="$2"
  21. if echo "$result" | grep -q '"success":true'; then
  22. echo -e "${GREEN}✓ $test_name${NC}"
  23. ((pass_count++))
  24. return 0
  25. else
  26. echo -e "${RED}✗ $test_name${NC}"
  27. echo " 响应: $result"
  28. ((fail_count++))
  29. return 1
  30. fi
  31. }
  32. check_failure() {
  33. local result="$1"
  34. local test_name="$2"
  35. if echo "$result" | grep -q '"success":false'; then
  36. echo -e "${GREEN}✓ $test_name (预期失败)${NC}"
  37. ((pass_count++))
  38. return 0
  39. else
  40. echo -e "${RED}✗ $test_name (应该失败但成功了)${NC}"
  41. ((fail_count++))
  42. return 1
  43. fi
  44. }
  45. echo "======================================"
  46. echo " 渠道定价功能端到端测试"
  47. echo "======================================"
  48. echo ""
  49. # ========== 模块 1: 定价标签 ==========
  50. echo -e "${YELLOW}【模块 1: 定价标签 API】${NC}"
  51. echo ""
  52. echo "TC-1.1 创建定价标签..."
  53. RESULT=$(curl -s -X POST "$BASE_URL/api/pricing_tag/" \
  54. -H "Authorization: Bearer $ADMIN_TOKEN" \
  55. -H "Content-Type: application/json" \
  56. -d '{"name":"E2E测试标签","color":"#52c41a","description":"端到端测试","sort_order":1}')
  57. check_success "$RESULT" "创建定价标签"
  58. TAG_ID=$(echo "$RESULT" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
  59. echo ""
  60. echo "TC-1.2 获取所有标签..."
  61. RESULT=$(curl -s "$BASE_URL/api/pricing_tag/" -H "Authorization: Bearer $ADMIN_TOKEN")
  62. check_success "$RESULT" "获取所有标签"
  63. echo ""
  64. echo "TC-1.3 创建重复名称标签 (应失败)..."
  65. RESULT=$(curl -s -X POST "$BASE_URL/api/pricing_tag/" \
  66. -H "Authorization: Bearer $ADMIN_TOKEN" \
  67. -H "Content-Type: application/json" \
  68. -d '{"name":"E2E测试标签","color":"#ff0000"}')
  69. check_failure "$RESULT" "创建重复名称标签"
  70. if [ -n "$TAG_ID" ]; then
  71. echo ""
  72. echo "TC-1.4 更新标签..."
  73. RESULT=$(curl -s -X PUT "$BASE_URL/api/pricing_tag/$TAG_ID" \
  74. -H "Authorization: Bearer $ADMIN_TOKEN" \
  75. -H "Content-Type: application/json" \
  76. -d '{"name":"E2E测试标签-更新","color":"#1890ff","description":"更新后"}')
  77. check_success "$RESULT" "更新标签"
  78. fi
  79. # ========== 模块 2: 渠道定价 ==========
  80. echo ""
  81. echo -e "${YELLOW}【模块 2: 渠道定价 API】${NC}"
  82. echo ""
  83. echo "TC-2.1 创建渠道定价 (按量计费)..."
  84. RESULT=$(curl -s -X POST "$BASE_URL/api/channel_pricing/" \
  85. -H "Authorization: Bearer $ADMIN_TOKEN" \
  86. -H "Content-Type: application/json" \
  87. -d '{"model_name":"e2e-test-model","channel_id":1,"quota_type":0,"model_ratio":10,"completion_ratio":1.5,"model_price":0}')
  88. check_success "$RESULT" "创建渠道定价(按量)"
  89. PRICING_ID=$(echo "$RESULT" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
  90. echo ""
  91. echo "TC-2.2 创建渠道定价 (按次计费)..."
  92. RESULT=$(curl -s -X POST "$BASE_URL/api/channel_pricing/" \
  93. -H "Authorization: Bearer $ADMIN_TOKEN" \
  94. -H "Content-Type: application/json" \
  95. -d '{"model_name":"e2e-test-model-call","channel_id":1,"quota_type":1,"model_ratio":0,"completion_ratio":0,"model_price":0.05}')
  96. check_success "$RESULT" "创建渠道定价(按次)"
  97. echo ""
  98. echo "TC-2.3 获取所有渠道定价..."
  99. RESULT=$(curl -s "$BASE_URL/api/channel_pricing/?p=1&page_size=10" -H "Authorization: Bearer $ADMIN_TOKEN")
  100. check_success "$RESULT" "获取所有渠道定价"
  101. echo ""
  102. echo "TC-2.4 获取指定模型的渠道定价..."
  103. RESULT=$(curl -s "$BASE_URL/api/channel_pricing/model/e2e-test-model" -H "Authorization: Bearer $ADMIN_TOKEN")
  104. check_success "$RESULT" "获取指定模型的渠道定价"
  105. echo ""
  106. echo "TC-2.5 获取带标签的渠道定价..."
  107. RESULT=$(curl -s "$BASE_URL/api/channel_pricing/with_tags?p=1&page_size=10" -H "Authorization: Bearer $ADMIN_TOKEN")
  108. check_success "$RESULT" "获取带标签的渠道定价"
  109. echo ""
  110. echo "TC-2.6 批量创建渠道定价..."
  111. RESULT=$(curl -s -X POST "$BASE_URL/api/channel_pricing/batch" \
  112. -H "Authorization: Bearer $ADMIN_TOKEN" \
  113. -H "Content-Type: application/json" \
  114. -d '{"items":[{"model_name":"batch-model-1","channel_id":1,"quota_type":0,"model_ratio":5},{"model_name":"batch-model-2","channel_id":1,"quota_type":0,"model_ratio":8}]}')
  115. check_success "$RESULT" "批量创建渠道定价"
  116. # ========== 模块 3: 清理测试数据 ==========
  117. echo ""
  118. echo -e "${YELLOW}【清理测试数据】${NC}"
  119. if [ -n "$TAG_ID" ]; then
  120. echo ""
  121. echo "删除测试标签..."
  122. RESULT=$(curl -s -X DELETE "$BASE_URL/api/pricing_tag/$TAG_ID" -H "Authorization: Bearer $ADMIN_TOKEN")
  123. check_success "$RESULT" "删除测试标签"
  124. fi
  125. if [ -n "$PRICING_ID" ]; then
  126. echo ""
  127. echo "删除测试渠道定价..."
  128. RESULT=$(curl -s -X DELETE "$BASE_URL/api/channel_pricing/$PRICING_ID" -H "Authorization: Bearer $ADMIN_TOKEN")
  129. check_success "$RESULT" "删除测试渠道定价"
  130. fi
  131. # 删除其他测试数据
  132. echo ""
  133. echo "清理批量创建的测试数据..."
  134. for model in "batch-model-1" "batch-model-2" "e2e-test-model-call"; do
  135. RESULT=$(curl -s "$BASE_URL/api/channel_pricing/model/$model" -H "Authorization: Bearer $ADMIN_TOKEN")
  136. IDS=$(echo "$RESULT" | grep -o '"id":[0-9]*' | grep -o '[0-9]*')
  137. for id in $IDS; do
  138. curl -s -X DELETE "$BASE_URL/api/channel_pricing/$id" -H "Authorization: Bearer $ADMIN_TOKEN" > /dev/null
  139. done
  140. done
  141. echo -e "${GREEN}✓ 清理完成${NC}"
  142. # ========== 测试总结 ==========
  143. echo ""
  144. echo "======================================"
  145. echo " 测试结果汇总"
  146. echo "======================================"
  147. echo -e "通过: ${GREEN}$pass_count${NC}"
  148. echo -e "失败: ${RED}$fail_count${NC}"
  149. echo ""
  150. if [ $fail_count -eq 0 ]; then
  151. echo -e "${GREEN}所有测试通过! ✓${NC}"
  152. exit 0
  153. else
  154. echo -e "${RED}有 $fail_count 个测试失败${NC}"
  155. exit 1
  156. fi