【发布时间】:2019-11-15 13:08:33
【问题描述】:
我的观点如下:
class StudentAPIPerformanceReport(
generics.RetrieveAPIView,
):
def get(self, request, *args, **kwargs):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="report.csv"'
writer = csv.writer(response)
for student in Student.objects.filter(pk=self.kwargs['pk']):
assigned_courses = CourseParticipant.objects.filter(student=student)
completed_courses = assigned_courses.filter(completed=True)
headings = (
"student full Name",
"number of assigned courses to student",
"number of completed courses by student"
)
rows = (
student.full_name,
assigned_courses.count(),
completed_courses.count()
)
writer.writerow(headings)
writer.writerow(rows)
return response
网址:
path(
'student/report/<int:pk>/',
StudentAPIPerformanceReport.as_view(),
name='student_performance'
)
并对其进行测试查看:
class StudentAPIPerformanceReportTestCase(APITestCase):
def setUp(self):
self.student_obj = Student.objects.create(
first_name='test',
last_name='student',
email='test_student@gmail.com',
)
self.course_obj = Course.objects.create(
name='test',
)
student_obj = CourseParticipant.objects.create(
course_id=self.course_obj.pk,
student_id=self.student_obj.pk,
)
def test_student_unassigned_from_course(self):
data_id = self.student_obj.pk
rud_url = api_reverse('student:student_performance', kwargs={'pk': data_id})
get_response = self.client.get(rud_url, data_id)
self.assertEqual(get_response.status_code, status.HTTP_200_OK)
但我有 Traceback:
错误 回溯(最近一次通话最后): 文件“/home/project/test_task/student/tests.py”,第 120 行,在 test_student_unassigned_from_course get_response = self.client.get(rud_url, data_id) 文件“/home/project/test_task/venv/lib/python3.7/site-packages/rest_framework/test.py”,第 292 行,在 get response = super(APIClient, self).get(path, data=data, **extra) 文件“/home/project/test_task/venv/lib/python3.7/site-packages/rest_framework/test.py”,第 199 行,在 get 'QUERY_STRING': urlencode(data or {}, doseq=True), 文件“/home/project/test_task/venv/lib/python3.7/site-packages/django/utils/http.py”,第 93 行,在 urlencode 查询中的键、值: TypeError: 'int' 对象不可迭代
我不会测试的 Api 只是制作一些格式为 csv 的文件:
test student,1,0
我如何测试它?我会很感激你的帮助
【问题讨论】:
标签: django unit-testing django-rest-framework