Python 在Django中测试Url是否给出500错误

Python 在Django中测试Url是否给出500错误,python,django,python-3.x,pytest,python-unittest,Python,Django,Python 3.x,Pytest,Python Unittest,我想测试URL是否有500个错误。在正常情况下,如果不需要登录,我会得到状态代码200,但如果需要登录,它会给我302错误。那么,如何才能以最佳方式测试所需的登录名和参数化url呢 多谢各位 所以我添加这个是因为有人将这个问题链接到了副本中,但它不是我的答案,为什么它不是我的答案,因为我可以用这个方法登录,但我想测试需要登录视图的url,我可以登录,但不在该视图中 c.post('login/', { 'username': 'nitin', 'password': 'qwerty123321'

我想测试URL是否有500个错误。在正常情况下,如果不需要登录,我会得到状态代码200,但如果需要登录,它会给我302错误。那么,如何才能以最佳方式测试所需的登录名和参数化url呢

多谢各位

所以我添加这个是因为有人将这个问题链接到了副本中,但它不是我的答案,为什么它不是我的答案,因为我可以用这个方法登录,但我想测试需要登录视图的url,我可以登录,但不在该视图中

c.post('login/', {
'username': 'nitin',
'password': 'qwerty123321'})
如果您不知道url的答案,那么在“视图”上签出问题在该问题中,我让用户使用mixer.blend()登录,这很好,但在“视图”中,用户还有一些与此相关的函数,只需检查一次即可。请帮我,谢谢

至少告诉我该怎么做我被弄得一团糟。再次感谢你

url.py views.py test_url.py
302是因为您的用户被重定向到登录屏幕

如果要测试需要身份验证的视图,首先需要对用户进行身份验证

幸运的是,这很容易做到。看


你能用上面更新的代码给我看一下吗只要用
c.post('login/',{'username':'nitin','password':'qwerty123321')替换
c.login(username='nitin',password='qwerty123321')
仍然获得302状态码你被重定向到@NikhilBhardwaj的是什么?如果你获得的是302状态码,你被重定向到某个地方。如果您知道在哪里,就更容易调试重定向的原因。您是否在测试设置中创建了用户?因为有可能登录失败!也许可以添加
User.objects。如果你还没有创建用户(username='fred',password='secret')
。你能解释一下为什么你期望500吗?500是服务器端故障。如果视图标记为
@login\u required
且当前用户未登录,则-是,它将用户重定向到登录页面。为什么它会返回500?是的,但我想用登录用户测试它为什么不?这是一些具体的情况,让我详细说明一下,如果你明白了,在用户登录后,有些页面会出现500个错误,所以,要测试那些出现500个错误的页面,我们需要使用测试功能。@IvanStarostin,我知道它会将我重定向到该登录页面,如果你想检查我的其他与该问题相关的问题,但要查看视图。所以请检查一下这个问题,先生,如果您能帮我一点忙,我们将不胜感激。。。。
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)


# 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)