- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
93 lines
2.9 KiB
Bash
Executable File
93 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 课程资料预览功能测试脚本
|
||
# 用途:快速测试API接口是否正常
|
||
|
||
set -e
|
||
|
||
BASE_URL="http://localhost:8000"
|
||
COURSE_ID=1
|
||
|
||
echo "========================================="
|
||
echo "课程资料预览功能测试"
|
||
echo "========================================="
|
||
echo ""
|
||
|
||
# 测试1: 检查后端服务是否启动
|
||
echo "测试 1/4: 检查后端服务..."
|
||
if curl -s "${BASE_URL}/health" > /dev/null 2>&1; then
|
||
echo "✅ 后端服务正常"
|
||
else
|
||
echo "❌ 后端服务未启动,请先运行启动脚本"
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# 测试2: 检查LibreOffice安装
|
||
echo "测试 2/4: 检查LibreOffice安装状态..."
|
||
CONVERTER_STATUS=$(curl -s "${BASE_URL}/api/v1/preview/check-converter" || echo "{}")
|
||
echo "$CONVERTER_STATUS" | python3 -m json.tool 2>/dev/null || echo "$CONVERTER_STATUS"
|
||
|
||
if echo "$CONVERTER_STATUS" | grep -q '"libreoffice_installed": true'; then
|
||
echo "✅ LibreOffice安装成功"
|
||
else
|
||
echo "⚠️ LibreOffice未安装或检测失败"
|
||
echo " 请检查Docker镜像是否正确构建"
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# 测试3: 获取课程资料列表
|
||
echo "测试 3/4: 获取课程资料列表..."
|
||
MATERIALS=$(curl -s "${BASE_URL}/api/v1/courses/${COURSE_ID}/materials" || echo "{}")
|
||
echo "$MATERIALS" | python3 -m json.tool 2>/dev/null || echo "$MATERIALS"
|
||
|
||
MATERIAL_COUNT=$(echo "$MATERIALS" | grep -o '"id"' | wc -l)
|
||
if [ "$MATERIAL_COUNT" -gt 0 ]; then
|
||
echo "✅ 找到 ${MATERIAL_COUNT} 个资料"
|
||
else
|
||
echo "⚠️ 该课程暂无资料"
|
||
echo " 请先在课程管理中上传测试文件"
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# 测试4: 测试预览接口(如果有资料)
|
||
if [ "$MATERIAL_COUNT" -gt 0 ]; then
|
||
echo "测试 4/4: 测试资料预览接口..."
|
||
|
||
# 提取第一个资料的ID
|
||
MATERIAL_ID=$(echo "$MATERIALS" | grep -o '"id": *[0-9]*' | head -1 | grep -o '[0-9]*')
|
||
|
||
if [ -n "$MATERIAL_ID" ]; then
|
||
echo " 测试资料ID: ${MATERIAL_ID}"
|
||
PREVIEW_INFO=$(curl -s "${BASE_URL}/api/v1/preview/material/${MATERIAL_ID}" || echo "{}")
|
||
echo "$PREVIEW_INFO" | python3 -m json.tool 2>/dev/null || echo "$PREVIEW_INFO"
|
||
|
||
if echo "$PREVIEW_INFO" | grep -q '"preview_type"'; then
|
||
echo "✅ 预览接口正常"
|
||
else
|
||
echo "❌ 预览接口异常"
|
||
fi
|
||
fi
|
||
else
|
||
echo "测试 4/4: 跳过(无资料可测试)"
|
||
fi
|
||
|
||
echo ""
|
||
echo "========================================="
|
||
echo "测试完成!"
|
||
echo "========================================="
|
||
echo ""
|
||
echo "📝 下一步:"
|
||
echo " 1. 如果LibreOffice未安装,请重新构建Docker镜像"
|
||
echo " 2. 如果无资料,请访问管理后台上传测试文件"
|
||
echo " 3. 在浏览器中访问课程详情页进行完整测试"
|
||
echo " http://localhost:3001/trainee/course-detail?id=${COURSE_ID}"
|
||
echo ""
|
||
echo "📖 详细测试指南:"
|
||
echo " kaopeilian-frontend/课程资料预览功能测试指南.md"
|
||
echo ""
|
||
|