45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
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()
|