diff --git a/app/tests/ReceiveExcelTest.py b/app/tests/ReceiveExcelTest.py new file mode 100644 index 0000000..80648dd --- /dev/null +++ b/app/tests/ReceiveExcelTest.py @@ -0,0 +1,43 @@ +import unittest +import os + +from app.views import * +from werkzeug.datastructures import FileStorage # 用于创建测试文件 + +class ReceiveExcelTestCase(unittest.TestCase): + + def setUp(self): + app.testing = True # 设置 Flask 应用为测试模式 + self.client = app.test_client() + # 创建一个测试用的Excel文件或使用一个真实的Excel文件路径 + self.test_file_path = 'template.xlsx' + + def test_receive_excel_no_file(self): + # 测试没有文件时的情况 + response = self.client.post('/api/receive-excel') + self.assertEqual(response.status_code, 400) + self.assertEqual(response.get_json(), {"error": "No file part"}) + + def test_receive_excel_with_file(self): + # 模拟已登录用户 + with self.client.session_transaction() as sess: + sess['number'] = 'X202301000001' + + # 使用 FileStorage 创建测试文件对象 + data = { + 'file': (open(self.test_file_path, 'rb'), self.test_file_path) + } + # 发送 POST 请求到 /api/receive-excel + response = self.client.post('/api/receive-excel', data=data, content_type='multipart/form-data') + + # 验证返回的状态码和响应 + self.assertEqual(response.status_code, 200) + self.assertEqual(response.get_json(), {"message": "File successfully processed"}) + + def tearDown(self): + # 清理测试用的文件或数据 + if os.path.exists(self.test_file_path): + os.remove(self.test_file_path) + +if __name__ == '__main__': + unittest.main()