2014-08-01 2 views
1

Приложение Django и тест для него. Я получаю сообщение об ошибке:AssertionError: 200! = 403

Traceback (most recent call last): 
    File "../support/tests.py", line 17, in foo 
    self.assertEqual(response.status_code, HttpResponseForbidden.status_code) 
AssertionError: 200 != 403 

Код для самого теста, который вызывает проблемы является:

response = self.client.get('/support/download/bar/') 
self.assertEqual(response.status_code, HttpResponseForbidden.status_code) 

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

Похоже, существует некоторая проблема с адресом /support/download/bar/?

ответ

3

тест вы делаете в вашем tests.py:

self.assertEqual(response.status_code, HttpResponseForbidden.status_code) 

Вы проверяете, если ответ, когда вы идете в URL /support/download/bar/ является HttpResponseForbidden (код 403).

Судя по всему, перейдет на страницу успешно отображает (код 200), который объясняет свою ошибку:

AssertionError: 200 != 403 

Вы ожидали ошибку, но вы получили успех отображения веб-страницы.

+1

Да, может потребоваться проверка разрешения на добавление. – Yejing

+0

Благодарим за отзыв Рафаэля. Теперь я понимаю проблему. – Oleg

+1

Вы можете подумать, что либо вы действительно ожидали '403', а ваш' view.py', вероятно, неправильно проверяли некоторые права доступа. Или желательно отобразить веб-страницу, а затем вам нужно повторно написать свой тест соответствующим образом. –

1

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

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

Если вы действительно не понимаете, почему тест проверяет это или как этот код ошибки 403 должен появиться, вам нужно будет провести некоторое расследование в зависимости от того, где вы получили код (при условии, что вы не писали это сам). Спросив людей, которые его написали, или проверив сообщение git commit, которое добавило тест, или двигаясь назад во времени в истории git, пока не найдете точку, в которой работал тест, все варианты.

+0

Благодарим за отзыв, Андрей. Скажите, пожалуйста, есть ли у вас какие-либо рекомендации о том, какие шаги следует предпринять, чтобы локализовать проблему? – Oleg

+1

На самом деле приложение возвращает 200, в то время как тест ожидает 403 –

+0

Downvote: не прочитал весь вопрос и не ответил на все, что ожидалось. ** Редактировать: ** Снято после правильного редактирования вашего ответа. –

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