88 lines
1.8 KiB
Bash
88 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
echo "Yuxi 测试运行器"
|
|
echo "========================"
|
|
|
|
PYTEST_CMD=("docker" "compose" "exec" "api" "uv" "run" "--group" "test" "pytest")
|
|
|
|
check_server() {
|
|
echo "检查测试服务器状态..."
|
|
if curl -s http://localhost:5050/api/system/health > /dev/null 2>&1; then
|
|
echo "✓ 测试服务器运行正常"
|
|
return 0
|
|
fi
|
|
|
|
echo "✗ 警告: 测试服务器未运行或无法访问"
|
|
echo " 请先执行 docker compose up -d 并确认 api-dev 健康"
|
|
return 1
|
|
}
|
|
|
|
run_unit_tests() {
|
|
echo "运行单元测试..."
|
|
"${PYTEST_CMD[@]}" test/unit -m "not slow"
|
|
}
|
|
|
|
run_integration_tests() {
|
|
echo "运行集成测试..."
|
|
check_server
|
|
"${PYTEST_CMD[@]}" test/integration
|
|
}
|
|
|
|
run_e2e_tests() {
|
|
echo "运行端到端测试..."
|
|
check_server
|
|
"${PYTEST_CMD[@]}" test/e2e -m e2e
|
|
}
|
|
|
|
run_all_tests() {
|
|
echo "运行全部测试..."
|
|
check_server
|
|
"${PYTEST_CMD[@]}" test
|
|
}
|
|
|
|
show_help() {
|
|
echo "用法: $0 [选项]"
|
|
echo ""
|
|
echo "选项:"
|
|
echo " unit - 运行单元测试"
|
|
echo " integration - 运行集成测试"
|
|
echo " e2e - 运行端到端测试"
|
|
echo " all - 运行全部测试"
|
|
echo " check - 检查测试服务"
|
|
echo " help - 显示此帮助"
|
|
echo ""
|
|
echo "示例:"
|
|
echo " $0 unit"
|
|
echo " $0 integration"
|
|
echo " $0 e2e"
|
|
echo " $0 all"
|
|
}
|
|
|
|
case "${1:-all}" in
|
|
"unit")
|
|
run_unit_tests
|
|
;;
|
|
"integration")
|
|
run_integration_tests
|
|
;;
|
|
"e2e")
|
|
run_e2e_tests
|
|
;;
|
|
"all")
|
|
run_all_tests
|
|
;;
|
|
"check")
|
|
check_server
|
|
;;
|
|
"help"|"-h"|"--help")
|
|
show_help
|
|
;;
|
|
*)
|
|
echo "未知选项: $1"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|