Я пытаюсь внедрить систему пользовательских профилей в Django, которая позволяет просто запросить «/ profile /», поскольку URL-адрес перенаправляется на ваш профиль пользователя, если он зарегистрирован, и на страницу входа в систему, если нет.Тестирование Логин Переадресация
Тест записывается следующим образом
class LoggedInProfileTest(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = User.objects.create_user(
username='Milhouse',
email="[email protected]",
password="MilhousePW")
def tearDown(self):
self.user.delete()
def test_user_profile_redirect(self):
request = self.factory.get("/profile/")
request.user = self.user
response = profile_redirect(request)
self.assertRedirects(
response,
expected_url="/profile/Milhouse/")
фактически функции должным образом и перенаправляет по желанию, но тест отказывается проходить со следующей ошибкой брошенной.
AttributeError: 'HttpResponseRedirect' object has no attribute 'client'
URL маршрутизации код
# main urls.py
urlpatterns = [
...
url(r'^profile/', include('profiles.urls')),
...
]
# profiles.py
urlpatterns = [
url(r'^(?P<username>[\[email protected]]+)/$',
views.user_profile,
name="user_profile"),
url(r'^$',
views.profile_redirect,
name="profile_redirect")
]
код Просмотров
@login_required
def profile_redirect(request):
return redirect("user_profile", request.user.username)
def user_profile(request, username):
pass
Вся помощь ценится :)
Не использовали unittest через некоторое время (поклонник py.test), но разве вы не должны использовать TestClient, предоставленный TestCase? Вы должны иметь доступ к нему как 'self.client' из любого метода в вашем тестовом классе. Не уверен, что это может помочь с вашей проблемой. – Sebastian
Спасибо за понимание Себастьяна. На самом деле я должен был :). Я хотел пообщаться с RequestFactory, чтобы познакомиться с ним, но, возможно, это немного перебор для этих тестов. – guptam