Est*_*man 14 django tdd session login
我正在尝试为一个用@login_required修饰的视图构建一个测试,因为我没能使它工作,我做了一个简单的测试但仍然无法通过.
以下是简单测试和视图的代码:
def test_login(self):
user = self._create_new_user()
self.assertTrue(user.is_active)
login = self.client.login(username=user.username,
password=self.data['password1'])
self.failUnless(login, 'Could not log in')
response = self.client.get('/accounts/testlogin/')
self.assertEqual(response.status_code, 200)
@login_required
def testlogin(request):
print 'testlogin !! '
return HttpResponse('OK')
Run Code Online (Sandbox Code Playgroud)
_create_new_user()正在保存用户,并且该方法内部有一个测试,看看它是否正常工作.
response.status_code中的测试失败,返回302并且响应实例是HttpResponseRedirect,正在重定向它,好像没有登录一样.
任何线索?我错过了什么?
关心埃斯特万
Ret*_*old 28
这个测试用例适合我:
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.test.client import Client
import unittest
class LoginTestCase(unittest.TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')
def testLogin(self):
self.client.login(username='john', password='johnpassword')
response = self.client.get(reverse('testlogin-view'))
self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
我建议你(如果你还没有使用它们)使用reverse()函数并命名你的URL.这样您就可以确保始终获得正确的URL.
答案如下:
Python 2.6.5 对 cookie 的存储方式进行了更改,这与测试客户端略有不兼容。该问题已在 1.1.X 和 trunk 分支中得到修复,但该修复尚未进入正式版本。
如果您使用 1.1.X 和 Python 2.6.5,则任何涉及 cookie 的测试活动都会出现问题。您需要降级 Python,或者使用 1.1.X 分支而不是 1.1.1 版本。
1.1.2 版本(将包括您描述的问题的修复)将在我们发布 1.2 的同时发布 - 希望很快。
您的,拉斯·马吉 %-)
| 归档时间: |
|
| 查看次数: |
8034 次 |
| 最近记录: |