У меня проблема с тестированием шаблона. Все работало нормально, пока я не добавил декоратор login_required. Теперь я получаю сообщение об ошибке утверждения при тестировании кода состояния и ошибку при загрузке шаблона во время тестирования «Используемый шаблон». Я много чего пробовал (создавать суперпользователей, is_active = True и т. Д.), Но безрезультатно. Что я делаю не так?
PS Все решения включали Django self.client.login (. ..) не работает в модульных тестах не работает.
test.py
class CityViewTests(TestCase):
def setUp(self):
user = User.objects.create_user(username='test_username',
password='12345', email='[email protected]')
def test_call_view_loads(self):
self.client.login(username='test_username', password='12345')
response = self.client.get('main_view')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'main_view.html')
url.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^main_view/$', views.main_view, name='main_view'),
url(r'^turn_calculations/$', views.turn_calculations,
name='turn_calculations')
]
views.py
@login_required
def main_view(request):
user = User.objects.get(id=request.user.id)
city_id = City.objects.get(user_id=user.id).id
city = City.objects.get(id=city_id)
profile = Profile.objects.get(user_id=request.user.id)
population = Citizen.objects.filter(city_id=city_id).count()
income =
Citizen.objects.filter(city_id=city_id).aggregate(Sum('income'))
['income__sum']
max_population = Residential.objects.filter(city_id=city_id).aggregate(Sum('max_population'
))['max_population__sum']
house_number = Residential.objects.filter(city_id=city_id).count()
return render(request, 'main_view.html', {'city': city,
'profile': profile,
'population': population,
'max_population': max_population,
'house_number': house_number,
'income': income})