- 添加 Bash 测试脚本 (test-project-creation.sh) - 添加 PowerShell 测试脚本 (test-project-creation.ps1) - 添加批处理测试脚本 (test-project-creation.bat) - 添加测试说明文档 (README.md) - 支持4个测试场景:成功、参数校验、查询列表、异常处理 - 包含数据库验证和事务回滚验证
227 lines
6.0 KiB
Batchfile
227 lines
6.0 KiB
Batchfile
@echo off
|
||
REM ====================================
|
||
REM 项目创建功能测试脚本 (Windows版本)
|
||
REM 功能:测试创建项目时集成流水分析平台
|
||
REM 作者:Claude Code
|
||
REM 日期:2026-03-04
|
||
REM ====================================
|
||
|
||
setlocal enabledelayedexpansion
|
||
|
||
REM 配置
|
||
set BASE_URL=http://localhost:8080
|
||
set USERNAME=admin
|
||
set PASSWORD=admin123
|
||
set TOKEN=
|
||
|
||
REM 颜色设置(Windows 10+)
|
||
set "GREEN=[92m"
|
||
set "RED=[91m"
|
||
set "YELLOW=[93m"
|
||
set "NC=[0m"
|
||
|
||
REM 计数器
|
||
set PASS_COUNT=0
|
||
set FAIL_COUNT=0
|
||
|
||
REM 日志函数
|
||
goto :main
|
||
|
||
:log_info
|
||
echo %GREEN%[INFO]%NC% %~1
|
||
goto :eof
|
||
|
||
:log_error
|
||
echo %RED%[ERROR]%NC% %~1
|
||
goto :eof
|
||
|
||
:log_warning
|
||
echo %YELLOW%[WARNING]%NC% %~1
|
||
goto :eof
|
||
|
||
REM 检查curl是否存在
|
||
:check_curl
|
||
where curl >nul 2>&1
|
||
if %ERRORLEVEL% neq 0 (
|
||
call :log_error "curl 未安装,请先安装 curl 或使用 Git Bash 运行 test-project-creation.sh"
|
||
exit /b 1
|
||
)
|
||
exit /b 0
|
||
|
||
REM 检查后端服务
|
||
:check_backend_service
|
||
call :log_info "检查后端服务状态..."
|
||
curl -s --connect-timeout 5 "%BASE_URL%/actuator/health" >nul 2>&1
|
||
if %ERRORLEVEL% equ 0 (
|
||
call :log_info "✓ 后端服务运行正常"
|
||
exit /b 0
|
||
) else (
|
||
call :log_error "✗ 后端服务未运行,请先启动后端服务"
|
||
call :log_info "启动命令: cd ruoyi-admin && mvn spring-boot:run"
|
||
exit /b 1
|
||
)
|
||
|
||
REM 获取访问令牌
|
||
:get_token
|
||
call :log_info "获取访问令牌..."
|
||
for /f "delims=" %%i in ('curl -s -X POST "%BASE_URL%/login/test?username=%USERNAME%&password=%PASSWORD%"') do set TOKEN_RESPONSE=%%i
|
||
|
||
REM 提取token(简单解析)
|
||
for /f "tokens=2 delims=:," %%a in ('echo %TOKEN_RESPONSE% ^| findstr /r "token"') do (
|
||
set TOKEN=%%a
|
||
set TOKEN=!TOKEN:"=!
|
||
goto :token_extracted
|
||
)
|
||
|
||
:token_extracted
|
||
if "%TOKEN%"=="" (
|
||
call :log_error "获取令牌失败:无法从响应中提取 token"
|
||
call :log_info "响应内容: %TOKEN_RESPONSE%"
|
||
exit /b 1
|
||
)
|
||
|
||
call :log_info "✓ 成功获取令牌"
|
||
exit /b 0
|
||
|
||
REM 测试场景1:创建项目成功
|
||
:test_create_project_success
|
||
call :log_info "=========================================="
|
||
call :log_info "测试场景1:创建项目成功"
|
||
call :log_info "=========================================="
|
||
|
||
REM 生成时间戳
|
||
for /f "tokens=1-6 delims=/:. " %%a in ("%date% %time%") do (
|
||
set TIMESTAMP=%%a%%b%%c_%%d%%e%%f
|
||
)
|
||
set PROJECT_NAME=集成测试项目_%TIMESTAMP%
|
||
|
||
REM 准备JSON数据(需要转义)
|
||
set REQUEST_DATA={"projectName":"%PROJECT_NAME%","description":"测试集成流水分析平台","configType":"default"}
|
||
|
||
call :log_info "请求数据: %REQUEST_DATA%"
|
||
|
||
REM 发送请求并保存响应到文件
|
||
curl -s -X POST "%BASE_URL%/ccdi/project" ^
|
||
-H "Content-Type: application/json" ^
|
||
-H "Authorization: Bearer %TOKEN%" ^
|
||
-d "%REQUEST_DATA%" > response.json
|
||
|
||
type response.json
|
||
echo.
|
||
|
||
REM 检查是否成功
|
||
findstr /c:"code":200 response.json >nul
|
||
if %ERRORLEVEL% equ 0 (
|
||
call :log_info "✓ 项目创建成功"
|
||
|
||
REM 检查lsfxProjectId
|
||
findstr /c:"lsfxProjectId" response.json >nul
|
||
if %ERRORLEVEL% equ 0 (
|
||
call :log_info "✓ 流水分析平台项目ID存在"
|
||
set /a PASS_COUNT+=1
|
||
) else (
|
||
call :log_error "✗ 流水分析平台项目ID为空"
|
||
set /a FAIL_COUNT+=1
|
||
)
|
||
) else (
|
||
call :log_error "✗ 项目创建失败"
|
||
set /a FAIL_COUNT+=1
|
||
)
|
||
|
||
del response.json
|
||
exit /b 0
|
||
|
||
REM 测试场景2:创建项目失败(项目名称为空)
|
||
:test_create_project_empty_name
|
||
call :log_info "=========================================="
|
||
call :log_info "测试场景2:创建项目失败(项目名称为空)"
|
||
call :log_info "=========================================="
|
||
|
||
set REQUEST_DATA={"projectName":"","description":"测试异常场景","configType":"default"}
|
||
|
||
call :log_info "请求数据: %REQUEST_DATA%"
|
||
|
||
curl -s -X POST "%BASE_URL%/ccdi/project" ^
|
||
-H "Content-Type: application/json" ^
|
||
-H "Authorization: Bearer %TOKEN%" ^
|
||
-d "%REQUEST_DATA%" > response.json
|
||
|
||
REM 检查是否失败
|
||
findstr /c:"code":200 response.json >nul
|
||
if %ERRORLEVEL% neq 0 (
|
||
call :log_info "✓ 正确拒绝了空项目名称"
|
||
set /a PASS_COUNT+=1
|
||
) else (
|
||
call :log_error "✗ 未正确验证项目名称"
|
||
set /a FAIL_COUNT+=1
|
||
)
|
||
|
||
del response.json
|
||
exit /b 0
|
||
|
||
REM 测试场景3:查询项目列表
|
||
:test_query_project_list
|
||
call :log_info "=========================================="
|
||
call :log_info "测试场景3:查询项目列表"
|
||
call :log_info "=========================================="
|
||
|
||
curl -s -X GET "%BASE_URL%/ccdi/project/list?pageNum=1&pageSize=10" ^
|
||
-H "Authorization: Bearer %TOKEN%" > response.json
|
||
|
||
REM 检查是否成功
|
||
findstr /c:"code":200 response.json >nul
|
||
if %ERRORLEVEL% equ 0 (
|
||
call :log_info "✓ 查询项目列表成功"
|
||
|
||
REM 检查lsfxProjectId
|
||
findstr /c:"lsfxProjectId" response.json >nul
|
||
if %ERRORLEVEL% equ 0 (
|
||
call :log_info "✓ 项目列表包含 lsfxProjectId 字段"
|
||
) else (
|
||
call :log_warning "! 项目列表可能缺少 lsfxProjectId 字段"
|
||
)
|
||
set /a PASS_COUNT+=1
|
||
) else (
|
||
call :log_error "✗ 查询项目列表失败"
|
||
set /a FAIL_COUNT+=1
|
||
)
|
||
|
||
del response.json
|
||
exit /b 0
|
||
|
||
REM 主函数
|
||
:main
|
||
call :log_info "=========================================="
|
||
call :log_info "开始执行项目创建功能测试"
|
||
call :log_info "=========================================="
|
||
|
||
REM 检查curl
|
||
call :check_curl || exit /b 1
|
||
|
||
REM 检查后端服务
|
||
call :check_backend_service || exit /b 1
|
||
|
||
REM 获取令牌
|
||
call :get_token || exit /b 1
|
||
|
||
REM 执行测试
|
||
call :test_create_project_success
|
||
call :test_create_project_empty_name
|
||
call :test_query_project_list
|
||
|
||
REM 输出测试结果
|
||
call :log_info "=========================================="
|
||
call :log_info "测试结果汇总"
|
||
call :log_info "=========================================="
|
||
call :log_info "通过: %PASS_COUNT%"
|
||
call :log_error "失败: %FAIL_COUNT%"
|
||
call :log_info "总计: %PASS_COUNT%"
|
||
|
||
if %FAIL_COUNT% equ 0 (
|
||
call :log_info "✓ 所有测试通过!"
|
||
exit /b 0
|
||
) else (
|
||
call :log_error "✗ 存在失败的测试"
|
||
exit /b 1
|
||
)
|