Django тестирует именованные URL-адреса с дополнительными параметрами GET

Я пытаюсь написать несколько тестов для приложения Django, над которым я работаю, но я еще не определился с точными URL-адресами, которые я хочу использовать для каждого представления. Поэтому в тестах я использую именованные URL-адреса.

Например, у меня есть URL-адрес с именем «Панель управления»:

c = Client()
resp = c.get(reverse('dashboard'))

Это представление должно быть доступно только для авторизованных пользователей. Если текущий пользователь анонимен, он должен перенаправить его на страницу входа в систему, которая также является именованным URL-адресом. Однако, когда он это делает, он использует дополнительный параметр GET для отслеживания URL, с которого он только что пришел, что приводит к следующему:

/login?next=dashboard

Когда я затем пытаюсь протестировать это перенаправление, он терпит неудачу из-за этих дополнительных параметров:

# It's expecting '/login' but gets '/login?next=dashboard'
self.assertRedirects(resp, reverse('login'))

Очевидно, это сработает, если я жестко закодирую их в тесте:

self.assertRedirects(resp, '/login?next=dashboard')

Но тогда, если я когда-нибудь решу изменить URL-адрес для моего представления панели инструментов, мне придется обновить каждый тест, который его использует.

Могу ли я что-нибудь сделать, чтобы упростить обработку этих дополнительных параметров?

Любые советы приветствуются.

Спасибо.

9
задан Dan 22 February 2012 в 23:45
поделиться