У меня есть такие просмотры, как:
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
URL:
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)
Но у меня есть трассировка:
Отслеживание ошибок (последний вызов был последним): файл "/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 (путь, данные = данные, ** extra) Файл "/home/project/test_task/venv/lib/python3.7/site-packages/rest_framework/test.py", строка 199, в get 'QUERY_STRING': urlencode (data or {}, drugq = 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
Как я могу это проверить?Буду благодарен за помощь