|
|
# 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())
|