2012-01-19 40 views
2

我在使用django测试中的登录装饰器时遇到了问题。许多测试开始Django测试:在测试用例中使用登录装饰器

self.client.login(username='foo', password='bar') 

因此,登录原则上工作;但现在我喜欢这行代码重构为一个装饰login,只是为了好玩:

def login(fn): 
    def wrapper(self): 
     self.client.login(username='foo', password='bar') 
     return fn(self) 
    return wrapper 

但当时失败的测试表明我的用户“富”甚至self.client.login返回真没有登录。

还有一件神秘的事情是,当我现在离开装饰器的self.client.login,使得装饰器除了包装外什么都不做,从装饰的测试方法中正常登录也不再可能了!

我认为测试客户端存在一些上下文或范围问题。你有什么想法是什么探头?这个故事是关于python2.7和django-1.3.1的。

回答