python - 在 Django 中测试 Url 是否给出 500 错误
问题描述
我想测试 Urls 是否收到 500 错误。在不需要登录的正常情况下,我得到 status_code 200,但在需要登录的情况下,它给了我 302 错误。那么,如何以最佳方式测试 loginrequired 和参数化的 url。
谢谢你
所以我添加这个是因为有人将该问题链接到重复项,但这不是我的答案,为什么它不是我的答案,因为我可以使用此方法登录,但我想测试其视图已登录的 url 我可以登录但不能登录那个观点
c.post('login/', {
'username': 'nitin',
'password': 'qwerty123321'})
如果您不知道 url 的答案,那么在“views”上结帐问题如何使用 pytest 测试视图,其视图具有 LoginRequired 以及 该问题中的一些特定用户依赖项我让用户使用 Mixer.blend() 登录,这很好但在“视图”中,用户有更多与此相关的功能,只需检查一次。请帮助我谢谢。
至少告诉我该怎么做,我对此感到非常困惑。再次感谢你
网址.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)
解决方案
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)
推荐阅读
- r - 在 R 中,增加一个列表和增加一个向量一样低效吗?
- matlab - 函数句柄元胞数组的总和
- django - 添加指向自定义 django 管理视图的链接
- google-sheets - GAS:如何检查文件是否存在于特定文件夹中,如果存在则进行下一次迭代
- python - 检查索引处的numpy数组的值
- php - 如何为 Jetpack Lazyload 使用 apply_filter()
- c - 为什么这个检查一行是否是回文的程序会返回一个段错误?
- django - post_save 不列出标签
- excel - How to get a span innertext when selector name includes tabs and space characters with excel vba?
- android - Xamarin.Forms 崩溃报告和分析建议/建议