survey/test_midterm_final.html
2025-11-15 23:51:08 +08:00

103 lines
5.8 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>期中期末功能测试</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
.test-result { margin: 10px 0; padding: 10px; border: 1px solid #ccc; }
.success { background-color: #d4edda; }
.error { background-color: #f8d7da; }
</style>
</head>
<body>
<h1>期中期末功能测试</h1>
<h2>测试结果:</h2>
<div id="testResults"></div>
<script>
async function runTests() {
const resultsDiv = document.getElementById('testResults');
resultsDiv.innerHTML = '<p>正在测试...</p>';
try {
// 测试1: 获取筛选条件
console.log('测试1: 获取筛选条件');
const filtersResponse = await fetch('/api/filters');
const filtersResult = await filtersResponse.json();
if (filtersResult.success) {
resultsDiv.innerHTML += '<div class="test-result success">✓ 筛选条件API正常</div>';
} else {
resultsDiv.innerHTML += '<div class="test-result error">✗ 筛选条件API失败</div>';
}
// 测试2: 期中考试筛选
console.log('测试2: 期中考试筛选');
const midtermResponse = await fetch('/api/questions-by-filters?subject=科学&grade=一年级上册&unit=期中');
const midtermResult = await midtermResponse.json();
if (midtermResult.success) {
const midtermTotal = Object.values(midtermResult.data).reduce((sum, questions) => sum + questions.length, 0);
resultsDiv.innerHTML += `<div class="test-result success">✓ 期中考试筛选正常: ${midtermTotal}题</div>`;
resultsDiv.innerHTML += `<div class="test-result"> - 基础题: ${midtermResult.data['基础题'].length}题</div>`;
resultsDiv.innerHTML += `<div class="test-result"> - 进阶题: ${midtermResult.data['进阶题'].length}题</div>`;
resultsDiv.innerHTML += `<div class="test-result"> - 竞赛题: ${midtermResult.data['竞赛题'].length}题</div>`;
} else {
resultsDiv.innerHTML += '<div class="test-result error">✗ 期中考试筛选失败</div>';
}
// 测试3: 期末考试筛选
console.log('测试3: 期末考试筛选');
const finalResponse = await fetch('/api/questions-by-filters?subject=科学&grade=一年级上册&unit=期末');
const finalResult = await finalResponse.json();
if (finalResult.success) {
const finalTotal = Object.values(finalResult.data).reduce((sum, questions) => sum + questions.length, 0);
resultsDiv.innerHTML += `<div class="test-result success">✓ 期末考试筛选正常: ${finalTotal}题</div>`;
resultsDiv.innerHTML += `<div class="test-result"> - 基础题: ${finalResult.data['基础题'].length}题</div>`;
resultsDiv.innerHTML += `<div class="test-result"> - 进阶题: ${finalResult.data['进阶题'].length}题</div>`;
resultsDiv.innerHTML += `<div class="test-result"> - 竞赛题: ${finalResult.data['竞赛题'].length}题</div>`;
} else {
resultsDiv.innerHTML += '<div class="test-result error">✗ 期末考试筛选失败</div>';
}
// 测试4: 对比期中期末题目数量
console.log('测试4: 对比期中期末题目数量');
if (midtermResult.success && finalResult.success) {
const midtermCount = Object.values(midtermResult.data).reduce((sum, questions) => sum + questions.length, 0);
const finalCount = Object.values(finalResult.data).reduce((sum, questions) => sum + questions.length, 0);
if (finalCount > midtermCount) {
resultsDiv.innerHTML += '<div class="test-result success">✓ 期末题目数量大于期中,符合预期</div>';
} else {
resultsDiv.innerHTML += '<div class="test-result error">✗ 期末题目数量应该大于期中</div>';
}
}
// 测试5: 具体单元筛选
console.log('测试5: 具体单元筛选');
const unitResponse = await fetch('/api/questions-by-filters?subject=科学&grade=一年级上册&unit=1-周围的植物');
const unitResult = await unitResponse.json();
if (unitResult.success) {
const unitTotal = Object.values(unitResult.data).reduce((sum, questions) => sum + questions.length, 0);
resultsDiv.innerHTML += `<div class="test-result success">✓ 具体单元筛选正常: ${unitTotal}题</div>`;
} else {
resultsDiv.innerHTML += '<div class="test-result error">✗ 具体单元筛选失败</div>';
}
resultsDiv.innerHTML += '<div class="test-result success"><strong>所有测试完成!</strong></div>';
} catch (error) {
console.error('测试失败:', error);
resultsDiv.innerHTML = `<div class="test-result error">测试失败: ${error.message}</div>`;
}
}
// 页面加载完成后运行测试
window.onload = runTests;
</script>
</body>
</html>