# import requests # import json # url = 'http://127.0.0.1:8000/get/information/' # class_name = '5班' # file_path = 'C:/Users/Lenovo/Desktop/5班.xlsx' # # with open(file_path, 'rb') as f: # files = {'file': f} # data = {'class_name': class_name} # response = requests.post(url, files=files, data=data) # print(response.text) from django.test import TestCase from django.urls import reverse from django.core.files.uploadedfile import SimpleUploadedFile from app01.models import Student class GetInformationTestCase(TestCase): def setUp(self): # 创建测试用的班级 Student.objects.create( name='测试学生1', sid='001', credit=3.5, class_name='测试班级1', probability=0.9, max=0.0, min=0.0 ) def test_getinformation_with_wrong_file(self): # 测试带有不同格式文件的POST请求 url = reverse('get_information') class_name = '测试班级2' file_content = b'some,data' # CSV文件内容 file = SimpleUploadedFile('test_file.csv', file_content, content_type='text/csv') data = {'class_name': class_name, 'file': file} response = self.client.post(url, data) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['message'], 0) def test_getinformation_without_file(self): url = reverse('get_information') class_name = '测试班级' response = self.client.post(url, {'class_name': class_name}) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['message'], 0) self.assertIn('缺少必要的参数', response.json()['error']) def test_getinformation_class_name(self): # 测试没有班级名称的POST请求 url = reverse('get_information') file_content = b'some,data' # excel文件内容 file = SimpleUploadedFile('test_file.xlsx', file_content, content_type='text/xlsx') response = self.client.post(url, {'file': file}) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['message'], 0) self.assertIn('缺少必要的参数', response.json()['error']) def test_getinformation_with_empty_file(self): # 测试上传空文件的POST请求 url = reverse('get_information') class_name = '测试班级' file = SimpleUploadedFile('test_file.xlsx', b'', content_type='text/xlsx') response = self.client.post(url, {'class_name': class_name}, FILES={'file': file}) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['message'], 0) self.assertIn('缺少必要的参数', response.json()['error']) def test_getinformation_not_post(self): url = reverse('get_information') response = self.client.get(url) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) self.assertIn('error', response.json()) def test_getinformation_with_put_request(self): # 测试PUT请求 url = reverse('get_information') response = self.client.put(url) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) self.assertIn('error', response.json()) def test_getinformation_with_delete_request(self): # 测试DELETE请求 url = reverse('get_information') response = self.client.delete(url) # 检查响应状态码和内容 self.assertEqual(response.status_code, 200) # 或者是200,视图处理决定 self.assertIn('error', response.json())