2012-01-19 111 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的。

回答