Проверка того, выдает ли URL-адрес ошибку 500 или нет в Django

Я хочу проверить URL-адреса, получаю ли я ошибку 500 или нет. В обычном случае, когда вход в систему не требуется, я получаю status_code 200, но когда вход в систему требуется, это дает мне ошибку 302. Итак, как можно наилучшим образом протестировать логин и параметризованный URL-адрес.

Спасибо

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

c.post('login/', {
'username': 'nitin',
'password': 'qwerty123321'})

если вы не знаете ответ с URL-адресом, то проверьте вопрос о «представлениях» Как тестировать представления с помощью pytest, чьи представления имеют LoginRequired и некоторые конкретные пользовательские зависимости в этом вопросе. Я получаю пользователя в систему с помощью mix.blend (), и это нормально, но в «представлениях» у пользователя есть еще несколько функций, связанных с этим просто проверьте один раз. И, пожалуйста, помогите мне с этим Спасибо.

И хотя бы скажите мне, как мне это сделать, я очень запутался с этим. Еще раз спасибо

urls.py

path('', event_views.dashboard_view, name='event-dashboard'),

просмотры.py

@login_required
def dashboard_view(request):
    # ccd = Org.objects.first()
    # print(ccd.__dict__)
    # print(request.user.)
    org = request.user.profile.org
    week_responses = day_wise_responses(7, org)
    user_org = request.user.profile.org.name
    sms_sent = org.sms_counter
    email_sent = org.email_counter
    today = datetime.today().date()
    responses_one_week = number_of_responses(7, org)
    responses_two_week = number_of_responses(14, org)
    average_rating = org_average_rating(org)
    responses_last_week = responses_two_week - responses_one_week
    if responses_last_week:
        responses_percent_change = (abs(responses_one_week - responses_last_week)/responses_last_week)*100
    else:
        responses_percent_change = responses_one_week*100
    # last n responses
    last_5_responses = last_n_responses(5, org)
    # print(last_5_responses)
    context = {'week_responses': week_responses, 'user_org': user_org, 'today': today,
               'responses_one_week': responses_one_week, 'responses_percent_change': responses_percent_change,
               'last_5_responses': last_5_responses, 'sms_sent': sms_sent, 'email_sent': email_sent,
               'average_rating': average_rating}
    return render(request, 'events/dashboard.html', context)

test_urls.py

@pytest.mark.django_db
class TestUrls(test.TestCase):
def test_event_dashboard(self):
c = Client()
c.post('login/', {
'username': 'nitin',
'password': 'qwerty123321'})
 response = c.get(reverse('event-dashboard'))
 self.assertEqual(response.status_code, 200)


Можете ли вы уточнить, почему вы ожидаете 500? 500 - сбой на стороне сервера. Если представление помечено как @login_required и текущий пользователь не вошел в систему, то да, он перенаправит пользователя на страницу входа. Почему он возвращает 500?

Ivan Starostin 09.04.2019 09:40

да, но я хочу проверить это с пользователем входа в систему, почему бы и нет? Есть некоторая конкретная ситуация, позвольте мне уточнить это, если вы понимаете, что после входа пользователя в систему есть некоторые страницы, на которых мы получаем ошибку 500, поэтому для тестирования тех страниц, на которых мы получаем ошибку 500, мы хотим использовать функцию тестирования.

Nikhil Bhardwaj 09.04.2019 09:49

@IvanStarostin И я знаю, что он перенаправит меня на эту страницу входа, и если вы хотите, проверьте мой другой вопрос, связанный с этой вещью, но с представлениями. Поэтому, пожалуйста, проверьте этот вопрос stackoverflow.com/questions/55546688/…, небольшая помощь будет оценена, сэр....

Nikhil Bhardwaj 09.04.2019 09:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
496
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка 302 связана с тем, что ваш пользователь перенаправляется на экран входа в систему.

Если вы хотите протестировать представления, требующие аутентификации, вам нужно сначала аутентифицировать пользователя.

К счастью, это очень легко сделать. См. документы.

# Create a new user
User.objects.create_user(
    username='fred',
    password='secret'
)

# Start up a test client
c = Client()

# Authenticate the user on the client
c.login(username='fred', password='secret')

# Do your thing
response = c.get(reverse('event-dashboard'))
self.assertEqual(response.status_code, 200)

можете показать мне обновленный код выше

Nikhil Bhardwaj 09.04.2019 02:11

Просто замените c.post('login/', {'username': 'nitin', 'password': 'qwerty123321'}) на c.login(username='nitin', password='qwerty123321')

Brachamul 09.04.2019 02:16

все еще получаю 302 status_code

Nikhil Bhardwaj 09.04.2019 02:19

что вас перенаправляют на @NikhilBhardwaj?

Brachamul 09.04.2019 12:07

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

Nikhil Bhardwaj 09.04.2019 12:12

Если вы получаете 302 status_code, вас куда-то перенаправляют. Если вы знаете, куда, вам будет легче отладить, почему вас перенаправляют. Вы создали пользователя в настройках вашего теста? Потому что есть вероятность, что авторизация не удалась! Возможно, добавьте User.objects.create_user(username='fred', password='secret'), если у вас его еще нет.

Brachamul 09.04.2019 13:01

спасибо, сэр. Это была ошибка в части перенаправления. На самом деле меня перенаправляло на какую-то другую страницу, основная проблема заключалась в перенаправлении со старта, а еще я забыл добавить User.objects.create_user(username='fred', password='secret') эту строку. Вы можете написать это как ответ, пожалуйста. И спасибо, что уделили мне свое драгоценное время.

Nikhil Bhardwaj 09.04.2019 18:48

Другие вопросы по теме