Django 测试 - TypeError: 类型模型的参数不可迭代



我在运行python manage.py test时收到错误:

TypeError: argument of type 'Course' is not iterable

以下是我的测试:

    def test_course_list_view(self):
       resp = self.client.get(reverse('courses:list'))
       self.assertEqual(resp.status_code, 200)
       self.assertIn(self.course, resp.context['courses'])
       self.assertIn(self.course2, resp.context['courses'])
    def test_course_detail_view(self):
       resp = self.client.get(reverse('courses:detail', args=[self.course.pk]))
       self.assertEqual(resp.status_code, 200)
       self.assertIn(self.course, resp.context['course'])

这是我正在测试的观点:

def course_list(request):
   courses = Course.objects.all()
   return render(request, 'courses/course_list.html', {'courses': courses})
def course_detail(request, pk):
   course = get_object_or_404(Course, pk=pk)
   return render(request, 'courses/course_detail.html', {'course': course})

感到困惑,因为我在test_course_list_view中没有收到错误,但test_course_detail_view确实抛出了错误?

assertIn做到了顾名思义:它断言参数一在参数二中。但是在详细信息视图的测试中,您将resp.context['course']作为参数 2 传递,它不是列表或容器,而是单个实例。

您需要比较两者是否相等,而不是一个在另一个中。

self.assertEqual(self.course, resp.context['course'])

最新更新