I'm currently working through the django tutorial for v1.10. On part 5 the 
final test that is created is raising an assertion error as follows:

Creating test database for alias 'default'...
.F........
======================================================================
FAIL: test_detail_view_with_a_past_question 
(polls.tests.QuestionIndexDetailTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/dufort/code/django-tutorials/mysite/polls/tests.py", line 
122, in test_detail_view_with_a_past_question
    self.assertContains(response, past_question.question_text)
  File 
"/tmp/bash-venv/8918/lib/python2.7/site-packages/django/test/testcases.py", 
line 382, in assertContains
    self.assertTrue(real_count != 0, msg_prefix + "Couldn't find %s in 
response" % text_repr)
AssertionError: Couldn't find 'Past Question.' in response

----------------------------------------------------------------------
Ran 10 tests in 0.045s

FAILED (failures=1)
Destroying test database for alias 'default'...



The following is the specific test being used 

import datetime

from django.utils import timezone
from django.test import TestCase
from django.urls import reverse

from .models import Question

...

def create_question(question_text, days):
    """
    Creates a question with the given 'question_text' and published the
    given number of 'days'offset to now (negative for question published in 
the past,
    positive for questions that have yet to be published.
    """
    time = timezone.now() + datetime.timedelta(days=days)
    return Question.objects.create(question_text=question_text, 
pub_date=time)


...

class QuestionIndexDetailTests(TestCase):

    ...

    def test_detail_view_with_a_past_question(self):
        """
        The detail view of a question with a pub_date in the past should
        display the question's text.
        """
        past_question = create_question(question_text='Past Question.', 
days=-5)
        url = reverse('polls:detail', args=(past_question.id,))
        response = self.client.get(url)
        self.assertContains(response, past_question.question_text)




Views:
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.views import generic
from django.utils import timezone

from .models import Choice, Question
# Create your views here.

class IndexView(generic.ListView):
    template_name = 'polls/index.html'
    context_object_name = 'latest_question_list'

    def get_queryset(self):
        """ 
        Return the last five published questions
        (not including those set to be published in the future.)
        """
        return Question.objects.filter(
            pub_date__lte=timezone.now()
        ).order_by('-pub_date')[:5]

class DetailView(generic.DetailView):
    model = Question
    template_name = 'polls/detail.html'

    def get_queryset(self):
        """
        Excludes any questions that aren't published yet.
        """
        return Question.objects.filter(pub_date__lte=timezone.now())

class ResultsView(generic.DetailView):
    model = Question
    template_name = 'polls/results.html'

def vote(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = question.choice_set.get(pk=request.POST['choice'])
    except (KeyError, Choice.DoesNotExist):
        return render(request, 'polls/detail.html', {
            'question': question,
            'error_message': "You didn't select a choice.",
        })
    else:
        selected_choice.votes += 1
        selected_choice.save()
        return HttpResponseRedirect(reverse('polls:results', 
args=(question.id,)))                                                      
                                                                            
                                                                
                                                                            
                                                            
 
I've decided to move forward with the tutorials. I am having trouble 
identifying if this is a bug in the tutorial itself or if there is just 
something missing in my code that is causing this error.



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/ffcc0413-2937-4f66-bfe4-445b7210f8f4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to