2014-09-01 3 views
0

Я пишу несколько тестов для моего проекта Django, и я пытаюсь проверить функции входа и функции, которые будут в декораторе «user_passes_test», в этом конкретном тесте функция, называемая "is_teacher". К сожалению, я не совсем уверен, как получить объект-пользователь от ответа. Я пробовал следующее, но я получаю сообщение об ошибке, что объект «dict» не имеет атрибута «пользователь».Тестирование функций, касающихся объекта пользователя с Django

user = User.objects.create_user(
    first_name='Elmar', 
    last_name='Fudd', 
    username='ef123', 
    email='[email protected]', 
    password='rabbitseason' 
) 
self.client.login(
    username='elmar', password='rabbitseason') 
response = self.client.get('/') 
request = response.request 
self.assertTrue(is_teacher(request.user)) 

Как я могу получить зарегистрированного пользователя из ответа?

+0

Что вы использовали для создания вашего пользователя? вы уверены, что имеете его запись в своей базе данных? Вы использовали светильники? или что? – Lara

+0

Добавили часть, в которой я создаю пользователя для части, указанной выше. Спасибо, что посмотрели! – Tobi

+0

Предполагая, что вы используете пользовательскую модель Django по умолчанию, вы должны установить пароль при создании пользователя, потому что он зашифрован. Взгляните на эту ссылку ... https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.login – Lara

ответ

0

Как указано в документации Django:

Напомним, что промежуточного слоя не поддерживаются. Вы можете смоделировать зарегистрированного пользователя , установив request.user вручную.

Так в основном вы должны вручную назначить пользователю по запросу:

request.user = user 

Где пользователь ваша создана вручную модель пользователя.