Я пытался написать unittest для ListView в Django 3.0.5. Мне нужно проверить данные, включенные в контекст. Приложение работает для этого представления, поэтому ошибки в реализации маловероятны. Но что я упустил при настройке теста?
Вот части моего источника:
urls.py:
app_name = 'gene'
urlpatterns = [
path('persons/', views.PersonList.as_view(), name='person-list'),
...
]
views.py
from django.views.generic.list import ListView
from gene.models import Person
class PersonList(ListView):
model = Person
def get_context_data(self, **kwargs):
context = super(PersonList, self).get_context_data(**kwargs) # this is line 11
...
return context
tests.py:
from django.test import TestCase, RequestFactory
from django.urls import reverse
from gene.models import Person
from gene.views import PersonList
class PersonListTest(TestCase):
def setUp(self):
person1 = Person.objects.create(name="Person 1")
person2 = Person.objects.create(name="Person 2")
def test_context(self):
request = RequestFactory().get(reverse('gene:person-list'))
view = PersonList()
view.setup(request)
context = view.get_context_data() # this is line 20, Error here
self.assertIn('environment', context)
Я следовал инструкциям из официальной документации.
Но когда я запускаю этот тест, я получаю на консоли следующее:
Error
Traceback (most recent call last):
File "/home/macbarfuss/PycharmProjects/Genealogy/gene/tests.py", line 20, in test_context
context = view.get_context_data()
File "/home/macbarfuss/PycharmProjects/Genealogy/gene/views.py", line 11, in get_context_data
context = super(PersonList, self).get_context_data(**kwargs)
File "/home/macbarfuss/PycharmProjects/Genealogy/venv/lib/python3.8/site-packages/django/views/generic/list.py", line 115, in get_context_data
queryset = object_list if object_list is not None else self.object_list
AttributeError: 'PersonList' object has no attribute 'object_list'
Есть идеи?