2013-08-06 2 views
0

Я адаптирую модульные тесты из официального учебника Django 1.5. Я пытаюсь проверить пустой контекст в ListView. Я получаю следующее сообщение об ошибке:Django: выпуск с модульным тестом ListView и assertContains

AssertionError: Couldn't find 'No persons are available' in response. 

И это мой ListView код:

class RsvpListView(generic.ListView): 
    template_name = 'rsvp_list.html' 
    context_object_name = 'rsvplist' 

    def get_queryset(self): 
     return Person.objects.all() 

Вот мой метод TestCase:

def test_rvsp_list_view_with_no_persons(self): 

     response = self.client.get(reverse('myapp:rsvp_view')) 
     self.assertEqual(response.status_code,200) 

     self.assertContains(response,"No persons are available.") 
     self.assertQuerysetEqual(response.context['rsvplist'],[]) 

Но в официальном учебнике опросах имели эквивалент (https://docs.djangoproject.com/en/dev/intro/tutorial05/#testing-our-new-view):

self.assertContains(response,"No polls are available.") 

Я не знаю, где «Нет опросов доступны» когда-либо хранится в ответе от метода представлений, который предоставляется в учебнике, но по какой-то причине он проходит - мой не работает.

Что мне не хватает в моем методе тестирования, чтобы он прошел тоже?

ответ

1

Сообщение «Нет опросов доступно» из шаблона. Из part 3 of the tutorial:

{% if latest_poll_list %} 
    <ul> 
    {% for poll in latest_poll_list %} 
     <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <p>No polls are available.</p> 
{% endif %} 

Вам необходимо обновить шаблон rsvp_list.html включить «Ни одно лицо не доступны.» Аналогичным образом.

+0

Спасибо за быстрый ответ. Я ценю это :) – Paul

0

Предыдущие работы ответ, но более эффективный способ (вы не будете использовать избыточные шаблонные конструкции), чтобы сделать это с помощью конструкции «для пустой», как это:

<ul> 
{% for poll in latest_poll_list %} 
    <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li> 
{% empty %} 
    <li>No polls are available.</li> 
{% endfor %} 
</ul> 
Смежные вопросы