Files
gym-manage/test-suite/run_uat_tests.sh
T

131 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# UAT测试套件运行脚本
# 用途: 执行用户验收测试(User Acceptance Testing)
set -e
echo "========================================="
echo " Novalon后台管理系统 - UAT测试套件"
echo "========================================="
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 项目根目录
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$PROJECT_ROOT"
# 检查Python环境
if ! command -v python3 &> /dev/null; then
echo -e "${RED}错误: 未找到Python3环境${NC}"
exit 1
fi
# 检查依赖
echo -e "${YELLOW}检查测试依赖...${NC}"
if ! python3 -c "import pytest" &> /dev/null; then
echo -e "${YELLOW}正在安装测试依赖...${NC}"
pip3 install -r requirements.txt
fi
# 解析命令行参数
TEST_TYPE="${1:-all}"
VERBOSE="${2:--v}"
# 测试类型映射
declare -A TEST_PATHS
TEST_PATHS["all"]="tests/uat/"
TEST_PATHS["acceptance"]="tests/uat/test_uat_acceptance.py"
TEST_PATHS["workflow"]="tests/uat/test_uat_workflow.py"
TEST_PATHS["business"]="tests/uat/test_uat_business_scenario.py"
TEST_PATHS["experience"]="tests/uat/test_uat_user_experience.py"
# 显示帮助信息
show_help() {
echo "用法: $0 [测试类型] [详细级别]"
echo ""
echo "测试类型:"
echo " all - 运行所有UAT测试 (默认)"
echo " acceptance - 运行验收测试"
echo " workflow - 运行工作流测试"
echo " business - 运行业务场景测试"
echo " experience - 运行用户体验测试"
echo ""
echo "详细级别:"
echo " -v - 详细输出 (默认)"
echo " -vv - 更详细输出"
echo " -s - 显示打印输出"
echo ""
echo "示例:"
echo " $0 all -v # 运行所有UAT测试,详细输出"
echo " $0 business -vv # 运行业务场景测试,更详细输出"
echo " $0 experience -s # 运行用户体验测试,显示打印输出"
}
# 检查参数
if [[ "$TEST_TYPE" == "-h" ]] || [[ "$TEST_TYPE" == "--help" ]]; then
show_help
exit 0
fi
# 验证测试类型
if [[ ! -v TEST_PATHS[$TEST_TYPE] ]]; then
echo -e "${RED}错误: 未知的测试类型 '$TEST_TYPE'${NC}"
echo ""
show_help
exit 1
fi
TEST_PATH="${TEST_PATHS[$TEST_TYPE]}"
echo -e "${GREEN}测试类型: $TEST_TYPE${NC}"
echo -e "${GREEN}测试路径: $TEST_PATH${NC}"
echo -e "${GREEN}详细级别: $VERBOSE${NC}"
echo ""
# 设置环境变量
export PYTHONPATH="$PROJECT_ROOT:$PYTHONPATH"
# 运行测试
echo -e "${YELLOW}开始执行UAT测试...${NC}"
echo ""
pytest "$TEST_PATH" \
"$VERBOSE" \
--strict-markers \
--tb=short \
--cov=. \
--cov-report=html:htmlcov/uat \
--cov-report=term-missing \
--alluredir=allure-results/uat \
-m "uat" \
--maxfail=5
# 检查测试结果
TEST_EXIT_CODE=$?
echo ""
echo "========================================="
if [ $TEST_EXIT_CODE -eq 0 ]; then
echo -e "${GREEN}✓ UAT测试全部通过!${NC}"
echo ""
echo "测试报告:"
echo " - HTML覆盖率报告: htmlcov/uat/index.html"
echo " - Allure测试报告: allure-results/uat/"
echo ""
echo "查看Allure报告:"
echo " allure serve allure-results/uat"
else
echo -e "${RED}✗ UAT测试失败!${NC}"
echo ""
echo "请检查测试日志并修复问题后重新运行。"
fi
echo "========================================="
exit $TEST_EXIT_CODE