0

Я пишу тестовые примеры для своего приложения Django, но я использую пакет запросов в Python для доступа к коду состояния, а затем использую оператор assert. Этот тест предназначен только для пользователей о персонале:Как получить код статуса с помощью библиотеки запросов при tesing в Django

class StaffClientServerTestCase(TestCase): 

    def test_login_staff(self): 
     User.objects.create_superuser('abc', '[email protected]', '1234') 
     self.client.login(username='abc', password='1234') 
     self.client.get('/dashboard/') 
     s = requests.get('http://localhost:8000/dashboard/') 
     print s.status_code 
     self.assertEqual(200, s.status_code) 

Только пользователи сотрудники имеют доступ к панели управления, поэтому я создал пользовательский объект персонала. Следующая строка

self.client.login(username='abc', password='1234') подходит для печати. self.client.get('/dashboard/') Если я распечатаю эту строку, он отобразит содержимое html страницы, что означает, что мой пользователь может получить доступ к dashboard.

Но когда я использую модуль запроса, чтобы увидеть код состояния dashboard, он показывает, что status code = 500, и мой тест не работает.

s = requests.get('http://localhost:8000/dashboard/') print s.status_code

Может кто-нибудь сказать мне, где я неправильно здесь? Почему мой код состояния выходит на 500, хотя пользователь может получить доступ к панели управления и распечатать его содержимое с помощью print self.client.get('/dashboard/'). Помогите!

+1

Вы должны либо указать учетные данные авторизации на 'request.get', либо не использовать' request.get' вообще в своих тестах и ​​test 'self.client', потому что вы входите в систему с помощью метода' self.client' и ' request.get' - еще одна вещь, поэтому вход в систему с 'self.client' не означает, что впоследствии вы будете аутентифицированы, чтобы делать другие вещи с другой библиотекой (например,' запросы здесь). Просто подумайте о том, что вы должны тестировать и просто проверяйте. Также HTTP 500 не является правильным кодом состояния, если вы просто не аутентифицированы, поэтому вы должны исправить свою панель. – dopstar

+0

Любая идея, как получить код статуса? Мне нужно проверить код состояния. – python

+0

Я отключил мою страницу администратора, поэтому я получил код состояния 500. – python

ответ

1

вы можете проверить случай другим способом:

защитить ваши взгляды с декоратора:

@user_passes_test(lambda u: u.is_staff) 
def dashboard(request, ...): 
    # ... 

, а затем запросить с requests чтобы увидеть, если вы запретили, чтобы увидеть страницу. если вы заблокированы (403 запрещено), ваши взгляды работают правильно. Чтобы убедиться, что ваши взгляды работают правильно для пользователей, удалите декоратор и запросите еще раз, если вы зайдете на этот раз, тогда все будет хорошо, единственное, что нужно проверить, - это логика внутри представлений.

но прямо сейчас вы получаете 500 вместо 403, что означает, что у вас есть ошибки в backend. сначала исправить их

+0

Я отключил мою страницу администратора, поэтому я получаю 500 ошибок. В противном случае все в порядке – python

Смежные вопросы