Python Django单元测试断言错误:404而不是200
我正试图为Django 1.8中的视图编写一个单元测试。 我正在尝试测试一个视图,该视图位于包含年和月作为参数的地址。 这是我的观点:Python Django单元测试断言错误:404而不是200,python,django,unit-testing,testing,view,Python,Django,Unit Testing,Testing,View,我正试图为Django 1.8中的视图编写一个单元测试。 我正在尝试测试一个视图,该视图位于包含年和月作为参数的地址。 这是我的观点: url(r'^/(?P<year>[0-9]{4})/(?P<month>[0-9]+)$', views.BookingListView.as_view(), name="list"), 我收到一个错误: Traceback (most recent call last): File "path to.../test_views.
url(r'^/(?P<year>[0-9]{4})/(?P<month>[0-9]+)$', views.BookingListView.as_view(), name="list"),
我收到一个错误:
Traceback (most recent call last):
File "path to.../test_views.py", line 16, in test_booking_list
self.assertEqual(response.status_code, 200)
AssertionError: 404 != 200
编辑
在浏览器栏中查看的路径:http://127.0.0.1:8000/en/archive/2011/01
查看BookingListView:
class BookingListView(ListView, MonthArchiveView):
queryset = models.Booking.objects.order_by('-date_start')
template_name = 'archive/booking_list.html'
date_field = 'date_start'
def get_context_data(self, **kwargs):
min_year = self.queryset.aggregate(Min('date_start'))
max_year = self.queryset.aggregate(Max('date_start'))
months_choices = []
for i in range(1, 13):
months_choices.append({'number': i, 'name': _(calendar.month_name[i])})
context = super(BookingListView, self).get_context_data(**kwargs)
context['mode'] = 'archive'
context['years'] = range(min_year['date_start__min'].year, max_year['date_start__max'].year + 1)
context['months'] = months_choices
context['selected_year'] = self.kwargs['year']
context['selected_month'] = self.kwargs['month']
context['object_list'] = models.Booking.objects.filter(date_start__year=self.get_year(),
date_start__month=self.get_month())
context['current_month_name'] = _(calendar.month_name[int(self.kwargs['month'])])
return context
BookingListView看起来像什么?“有任何情况下它会引发404吗?”DanielRoseman请检查我的edit@Kai您是否已经用这些
年和月创建了预订列表
模型?@webcakisa我也有同样的问题。在使用self.client.get
测试视图之前,我肯定会在setUp()
中创建对象,通过执行obj=Model.objects.get(attr='value')
和self.assertEqual(obj.attr,'value')
来验证该对象。BookingListView看起来像什么?“有任何情况下它会引发404吗?”DanielRoseman请检查我的edit@Kai您是否已经用这些年和月创建了预订列表
模型?@webcakisa我也有同样的问题。在使用self.client.get
测试视图之前,我肯定会在setUp()。
class BookingListView(ListView, MonthArchiveView):
queryset = models.Booking.objects.order_by('-date_start')
template_name = 'archive/booking_list.html'
date_field = 'date_start'
def get_context_data(self, **kwargs):
min_year = self.queryset.aggregate(Min('date_start'))
max_year = self.queryset.aggregate(Max('date_start'))
months_choices = []
for i in range(1, 13):
months_choices.append({'number': i, 'name': _(calendar.month_name[i])})
context = super(BookingListView, self).get_context_data(**kwargs)
context['mode'] = 'archive'
context['years'] = range(min_year['date_start__min'].year, max_year['date_start__max'].year + 1)
context['months'] = months_choices
context['selected_year'] = self.kwargs['year']
context['selected_month'] = self.kwargs['month']
context['object_list'] = models.Booking.objects.filter(date_start__year=self.get_year(),
date_start__month=self.get_month())
context['current_month_name'] = _(calendar.month_name[int(self.kwargs['month'])])
return context