Mic*_*ael 5 django-testing django-tests
Django 1.9.6
我想写一些单元测试来检查重定向.
你能帮我理解我在这里做错了什么.
先感谢您.
考试:
from django.test import TestCase
from django.core.urlresolvers import reverse
from django.http.request import HttpRequest
from django.contrib.auth.models import User
class GeneralTest(TestCase):
def test_anonymous_user_redirected_to_login_page(self):
user = User(username='anonymous', email='vvv@mail.ru', password='ttrrttrr')
user.is_active = False
request = HttpRequest()
request.user = user
hpv = HomePageView()
response = hpv.get(request)
self.assertRedirects(response, reverse("auth_login"))
Run Code Online (Sandbox Code Playgroud)
结果:
回溯(最近一次调用最后一次):文件"/home/michael/workspace/photoarchive/photoarchive/general/tests.py",第44行,在test_anonymous_user_redirected_to_login_page中self.assertRedirects(响应,反向("auth_login"))文件"/ home /michael/workspace/venvs/photoarchive/lib/python3.5/site-packages/django/test/testcases.py",第326行,在assertRedirects中redirect_response = response.client.get(path,QueryDict(query),AttributeError: 'HttpResponseRedirect'对象没有属性'client'
在0.953s中进行3次测试
什么pdb说:
-> self.assertRedirects(response, reverse("auth_login"))
(Pdb) response
<HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="/accounts/login/">
Run Code Online (Sandbox Code Playgroud)
小智 6
看起来您是直接调用视图get而不是使用内置的Client. 当您使用测试客户端时,您会在响应中返回客户端实例,大概是在您想要检查/获取重定向的情况下。
一种解决方案是使用客户端从您的视图中获取响应。另一种方法是让客户参与上述响应。
第三个选项是告诉assertRedirects不要获取重定向。如果您不要求断言获取重定向,则不需要客户端。这是通过添加fetch_redirect_response=False到你的断言中来完成的。
小智 5
您需要向响应对象添加一个客户端。请参阅下面的更新代码。
from django.test import TestCase, Client
from django.core.urlresolvers import reverse
from django.http.request import HttpRequest
from django.contrib.auth.models import User
class GeneralTest(TestCase):
def test_anonymous_user_redirected_to_login_page(self):
user = User(username='anonymous', email='vvv@mail.ru', password='ttrrttrr')
user.is_active = False
request = HttpRequest()
request.user = user
hpv = HomePageView()
response = hpv.get(request)
response.client = Client()
self.assertRedirects(response, reverse("auth_login"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |