【发布时间】:2019-08-30 04:07:40
【问题描述】:
我想测试 Urls 是否收到 500 错误。在不需要登录的正常情况下,我得到 status_code 200,但在需要登录的情况下,它给了我 302 错误。那么,如何以最好的方式测试 loginrequired 和参数化的 url。
谢谢
所以我添加这个是因为有人将该问题链接到重复但它不是我的答案以及为什么它不是我的答案因为我可以使用此方法登录但我想测试其视图已登录的 url 我可以登录但不是在那个视图中
c.post('login/', {
'username': 'nitin',
'password': 'qwerty123321'})
如果您不知道 url 的答案,那么在该问题中的“views”How to test views with pytest whose views has LoginRequired and some specific user dependencies 上结帐问题我正在让用户使用mixer.blend() 登录,这很好,但在“views”中,用户有一些与此相关的更多功能只需检查一次。请帮助我,谢谢。
至少告诉我该怎么做,我对此感到非常困惑。再次感谢您
urls.py
path('', event_views.dashboard_view, name='event-dashboard'),
views.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? -
yaa 但我想用登录用户测试它,为什么不呢?有一些具体情况让我详细说明一下,如果你明白了,在用户登录后,有些页面出现 500 错误,所以要测试那些出现 500 错误的页面,我们要使用测试功能。
-
@IvanStarostin 我知道它会将我重定向到该登录页面,如果您想查看我与该内容相关的其他问题,但需要查看。因此,请检查该问题stackoverflow.com/questions/55546688/… 先生,我们将不胜感激......
标签: python django python-3.x pytest python-unittest