2013-04-20 84 views
0

我试图塞汀了鼻子的测试用户,但它亘古不变的在全球范围内的工作鼻子Django的用户设置测试

定义:测试类的内部

from django.contrib.auth.models import User 
import nose.tools as noz 

定义:

def setUp(self): 
    self.client = Client() 
    user = User(username="test", password="test") 
    user.save() 

用户保存,这是我与noz.set_trace(测试) 但是当测试函数调用同一个用户的登录,断言引发错误:

nosetests --verbosity 1 
Creating test database for alias 'default'... 
> <app-path>/tests.py(59)testTestUser() 
-> response = self.client.login(username=u'test', password=u'test') 
(Pdb) User.objects.all() 
[<User: test>] 

的testTestUser函数被定义,如:

def testTestUser(self): 
    """ Tests if the django user 'test' is setup properly.""" 
    noz.set_trace() 
    # login the test user 
    response = self.client.login(username='test', password='test')  
    noz.assert_equal(response, True) 

相关的测试输出是:

noz.assert_equal(response, True) 
     AssertionError: False != True 

    ---------------------------------------------------------------------- 
    Ran 1 test in 0.011s 

    FAILED (failures=1) 

我的目的是测试已经requst.user.is_authenicated()分支视图。

+0

计算出来: – 2013-04-20 05:26:29

回答

1

了它从: http://www.pukkared.com/2011/07/simulating-user-login-in-a-django-view-unit-test/

正确的代码是:

def setUp(self): 
    self.client = Client() 
    user = User.objects.create_user(username="test", password="test") 

def testTestUser(self): 
    """ Tests if the django user 'test' is setup properly.""" 
    noz.set_trace() 
    # login the test user 
    response = self.client.login(username='test', password='test')  
    noz.assert_equal(response, True)