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
|
|||
|
|
)
|