Я хочу проверить URL-адреса, получаю ли я ошибку 500 или нет. В обычном случае, когда вход в систему не требуется, я получаю status_code 200, но когда вход в систему требуется, это дает мне ошибку 302. Итак, как можно наилучшим образом протестировать логин и параметризованный URL-адрес.
Спасибо
Итак, я добавляю это, потому что кто-то связывает этот вопрос с дубликатом, но это не мой ответ, и почему это не мой ответ, потому что я могу войти в систему с помощью этого метода, но я хочу проверить этот URL-адрес, представления которого требуют входа в систему. Я могу войти в систему, но не в этот вид
c.post('login/', {
'username': 'nitin',
'password': 'qwerty123321'})
если вы не знаете ответ с URL-адресом, то проверьте вопрос о «представлениях» Как тестировать представления с помощью pytest, чьи представления имеют LoginRequired и некоторые конкретные пользовательские зависимости в этом вопросе. Я получаю пользователя в систему с помощью mix.blend (), и это нормально, но в «представлениях» у пользователя есть еще несколько функций, связанных с этим просто проверьте один раз. И, пожалуйста, помогите мне с этим Спасибо.
И хотя бы скажите мне, как мне это сделать, я очень запутался с этим. Еще раз спасибо
path('', event_views.dashboard_view, name='event-dashboard'),
@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)
@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, мы хотим использовать функцию тестирования.
@IvanStarostin И я знаю, что он перенаправит меня на эту страницу входа, и если вы хотите, проверьте мой другой вопрос, связанный с этой вещью, но с представлениями. Поэтому, пожалуйста, проверьте этот вопрос stackoverflow.com/questions/55546688/…, небольшая помощь будет оценена, сэр....
Ошибка 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)
можете показать мне обновленный код выше
Просто замените c.post('login/', {'username': 'nitin', 'password': 'qwerty123321'})
на c.login(username='nitin', password='qwerty123321')
все еще получаю 302 status_code
что вас перенаправляют на @NikhilBhardwaj?
после входа?? на домашнюю страницу нашего веб-сайта, на самом деле никто не может посетить домашнюю страницу, если этот человек не вошел в систему, первая страница, которую мы показываем пользователю, - это страница входа в систему... и если вы хотите, вы можете проверить вид выше, панель инструментов наша страница, которую мы показываем пользователю после входа в систему..
Если вы получаете 302 status_code, вас куда-то перенаправляют. Если вы знаете, куда, вам будет легче отладить, почему вас перенаправляют. Вы создали пользователя в настройках вашего теста? Потому что есть вероятность, что авторизация не удалась! Возможно, добавьте User.objects.create_user(username='fred', password='secret')
, если у вас его еще нет.
спасибо, сэр. Это была ошибка в части перенаправления. На самом деле меня перенаправляло на какую-то другую страницу, основная проблема заключалась в перенаправлении со старта, а еще я забыл добавить User.objects.create_user(username='fred', password='secret')
эту строку. Вы можете написать это как ответ, пожалуйста. И спасибо, что уделили мне свое драгоценное время.
Можете ли вы уточнить, почему вы ожидаете 500? 500 - сбой на стороне сервера. Если представление помечено как
@login_required
и текущий пользователь не вошел в систему, то да, он перенаправит пользователя на страницу входа. Почему он возвращает 500?