Я использую django.test.client.Client, чтобы проверить, появляется ли какой-либо текст, когда пользователь вошел в систему. Однако, я, кажется, объект Client не держит меня в системе.
Этот тест проходит, если выполняется вручную с Firefox, но не выполняется с объектом Client.
class Test(TestCase):
def test_view(self):
user.set_password(password)
user.save()
client = self.client
# I thought a more manual way would work, but no luck
# client.post('/login', {'username':user.username, 'password':password})
login_successful = client.login(username=user.username, password=password)
# this assert passes
self.assertTrue(login_successful)
response = client.get("/path", follow=True)
#whether follow=True or not doesn't seem to work
self.assertContains(response, "needle" )
Когда я печатаю ответ, он возвращает форму входа, которая скрыта:
{% if not request.user.is_authenticated %}
... form ...
{% endif %}
Это подтверждается при запуске ipython manage.py shell
.
Кажется, проблема в том, что объект Client не поддерживает аутентификацию сеанса.