# Tutorial 5, error "Unresolved reference 'create\_question' in tests.py"

**URL:** <https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345>\
**Category:** ORM\
**Created:** [October 6, 2022, 8:56am UTC](https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345 "2022-10-06T08:56:23Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![polishchuk0503](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/polishchuk0503/32/10327_2.png) [@polishchuk0503](https://forum.djangoproject.com/u/polishchuk0503)\
**Post date:** [October 6, 2022, 8:56am UTC](https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345/1 "2022-10-06T08:56:23Z")

</div>

I met a problem when writing tests for a site from tutorial 5, everything is written exactly the same as in the tutorial, “create\_question” does not want to work.

CODE:  
import datetime

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

from .models import Question

class QuestionModelTests(TestCase):

```
def test_was_published_recently_with_future_question(self):
    """
    was_published_recently() returns False for questions whose pub_date
    is in the future.
    """
    time = timezone.now() + datetime.timedelta(days=30)
    future_question = Question(pub_date=time)
    self.assertIs(future_question.was_published_recently(), False)

def test_was_published_recently_with_old_question(self):
    """
    was_published_recently() returns False for questions whose pub_date
    is older than 1 day.
    """
    time = timezone.now() - datetime.timedelta(days=1, seconds=1)
    old_question = Question(pub_date=time)
    self.assertIs(old_question.was_published_recently(), False)

def test_was_published_recently_with_recent_question(self):
    """
    was_published_recently() returns True for questions whose pub_date
    is within the last day.
    """
    time = timezone.now() - datetime.timedelta(hours=23, minutes=59, seconds=59)
    recent_question = Question(pub_date=time)
    self.assertIs(recent_question.was_published_recently(), True)

def create_question(question_text, days):
    """
    Create a question with the given `question_text` and published the
    given number of `days` offset to now (negative for questions 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 QuestionIndexViewTests(TestCase):  
def test\_no\_questions(self):  
“”"  
If no questions exist, an appropriate message is displayed.  
“”"  
response = self.client.get(reverse(‘polls:index’))  
self.assertEqual(response.status\_code, 200)  
self.assertContains(response, “No polls are available.”)  
self.assertQuerysetEqual(response.context[‘latest\_question\_list’], )

```
def test_past_question(self):
    """
    Questions with a pub_date in the past are displayed on the
    index page.
    """
    question = create_question(question_text="Past question.", days=-30)
    response = self.client.get(reverse('polls:index'))
    self.assertQuerysetEqual(
        response.context['latest_question_list'],
        [question],
    )

def test_future_question(self):
    """
    Questions with a pub_date in the future aren't displayed on
    the index page.
    """
    create_question(question_text="Future question.", days=30)
    response = self.client.get(reverse('polls:index'))
    self.assertContains(response, "No polls are available.")
    self.assertQuerysetEqual(response.context['latest_question_list'], [])

def test_future_question_and_past_question(self):
    """
    Even if both past and future questions exist, only past questions
    are displayed.
    """
    question = create_question(question_text="Past question.", days=-30)
    create_question(question_text="Future question.", days=30)
    response = self.client.get(reverse('polls:index'))
    self.assertQuerysetEqual(
        response.context['latest_question_list'],
        [question],
    )

def test_two_past_questions(self):
    """
    The questions index page may display multiple questions.
    """
    question1 = create_question(question_text="Past question 1.", days=-30)
    question2 = create_question(question_text="Past question 2.", days=-5)
    response = self.client.get(reverse('polls:index'))
    self.assertQuerysetEqual(
        response.context['latest_question_list'],
        [question2, question1],
    )

```

class QuestionDetailViewTests(TestCase):  
def test\_future\_question(self):  
“”"  
The detail view of a question with a pub\_date in the future  
returns a 404 not found.  
“”"  
future\_question = create\_question(question\_text=‘Future question.’, days=5)  
url = reverse(‘polls:detail’, args=(future\_question.id,))  
response = self.client.get(url)  
self.assertEqual(response.status\_code, 404)

```
def test_past_question(self):
    """
    The detail view of a question with a pub_date in the past
    displays 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)

```

# ERRORS: (venv) PS C:\Users\Danil\PycharmProjects\Mysite\mysite\> python manage.py test polls Found 10 test(s). Creating test database for alias ‘default’… System check identified no issues (0 silenced). EEEE.EE…

## ERROR: test\_future\_question (polls.tests.QuestionDetailViewTests) The detail view of a question with a pub\_date in the future

Traceback (most recent call last):  
File “C:\Users\Danil\PycharmProjects\Mysite\mysite\polls\tests.py”, line 112, in test\_future\_question  
future\_question = create\_question(question\_text=‘Future question.’, days=5)  
NameError: name ‘create\_question’ is not defined

## ====================================================================== ERROR: test\_past\_question (polls.tests.QuestionDetailViewTests) The detail view of a question with a pub\_date in the past

Traceback (most recent call last):  
File “C:\Users\Danil\PycharmProjects\Mysite\mysite\polls\tests.py”, line 122, in test\_past\_question  
past\_question = create\_question(question\_text=‘Past Question.’, days=-5)  
NameError: name ‘create\_question’ is not defined

## ====================================================================== ERROR: test\_future\_question (polls.tests.QuestionIndexViewTests) Questions with a pub\_date in the future aren’t displayed on

Traceback (most recent call last):  
File “C:\Users\Danil\PycharmProjects\Mysite\mysite\polls\tests.py”, line 75, in test\_future\_question  
create\_question(question\_text=“Future question.”, days=30)  
NameError: name ‘create\_question’ is not defined

## ====================================================================== ERROR: test\_future\_question\_and\_past\_question (polls.tests.QuestionIndexViewTests) Even if both past and future questions exist, only past questions

Traceback (most recent call last):  
File “C:\Users\Danil\PycharmProjects\Mysite\mysite\polls\tests.py”, line 85, in test\_future\_question\_and\_past\_question  
question = create\_question(question\_text=“Past question.”, days=-30)  
NameError: name ‘create\_question’ is not defined

## ====================================================================== ERROR: test\_past\_question (polls.tests.QuestionIndexViewTests) Questions with a pub\_date in the past are displayed on the

Traceback (most recent call last):  
File “C:\Users\Danil\PycharmProjects\Mysite\mysite\polls\tests.py”, line 63, in test\_past\_question  
question = create\_question(question\_text=“Past question.”, days=-30)  
NameError: name ‘create\_question’ is not defined

## ====================================================================== ERROR: test\_two\_past\_questions (polls.tests.QuestionIndexViewTests) The questions index page may display multiple questions.

Traceback (most recent call last):  
File “C:\Users\Danil\PycharmProjects\Mysite\mysite\polls\tests.py”, line 97, in test\_two\_past\_questions  
question1 = create\_question(question\_text=“Past question 1.”, days=-30)  
NameError: name ‘create\_question’ is not defined

* * *

Ran 10 tests in 0.026s

FAILED (errors=6)  
Destroying test database for alias ‘default’…  
(venv) PS C:\Users\Danil\PycharmProjects\Mysite\mysite\>

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [October 7, 2022, 12:44am UTC](https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345/2 "2022-10-07T00:44:25Z")

</div>

First a side note - when posting code, templates, error message, etc, here enclose each block of text between lines of three backtick - ` characters. This means you’ll have a line of ```, then your code, then another line of ```. This forces the forum software to keep the text properly formatted, which is critical with Python.

Regardless of the above, it looks like you have your `create_question` function as a method in a class, but that’s not what’s shown in the tutorial. That `create_question` function should be at the “module” level and not within a class.

---

<div class="post-metadata">

**Author:** ![polishchuk0503](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/polishchuk0503/32/10327_2.png) [@polishchuk0503](https://forum.djangoproject.com/u/polishchuk0503)\
**Post date:** [October 7, 2022, 9:47am UTC](https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345/3 "2022-10-07T09:47:31Z")

</div>

Then how to make this function at the “module” level?

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [October 7, 2022, 11:23am UTC](https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345/4 "2022-10-07T11:23:55Z")

</div>

You “de-indent” it. The `def` statement starts in column 1, and the code in that function is indented beneath it as appropriate. Examine the code in the tutorial carefully, paying close attention to the indentation.

---

<div class="post-metadata">

**Author:** ![polishchuk0503](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/polishchuk0503/32/10327_2.png) [@polishchuk0503](https://forum.djangoproject.com/u/polishchuk0503)\
**Post date:** [October 7, 2022, 11:52am UTC](https://forum.djangoproject.com/t/tutorial-5-error-unresolved-reference-create-question-in-tests-py/16345/5 "2022-10-07T11:52:53Z")

</div>

I understood everything, thanks.
