import unittest from app.views import * from flask import session from unittest.mock import patch # 如果需要模拟数据库方法 class MenuAPITestCase(unittest.TestCase): def setUp(self): app.testing = True # 设置 Flask 应用为测试模式 self.client = app.test_client() # 创建一个测试客户端 self.expected_menu = [ {"name": "课程类别", "path": "/course-category"}, {"name": "课程信息", "path": "/course-info"}, {"name": "课程签到", "path": "/attendance-teacher"}, {"name": "签到提醒", "path": "/attendance-reminder"} ] def test_menu_no_login(self): # 测试未登录情况下请求API response = self.client.get('/api/menu') self.assertEqual(response.status_code, 401) self.assertEqual(response.get_json(), []) def test_login(self): with self.client: self.client.post('/login', data=dict( number='G0001', password='1' )) # 确认登录后session中有数据 self.assertIn('role', session) # 执行logout response = self.client.get('/api/menu') print(response.get_json()) # 确认响应是重定向到登录页面 self.assertEqual(response.status_code, 200) self.assertEqual(self.expected_menu,response.get_json()) if __name__ == '__main__': unittest.main()