Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django单元测试断言错误:404而不是200_Python_Django_Unit Testing_Testing_View - Fatal编程技术网

Python Django单元测试断言错误:404而不是200

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.

我正试图为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.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