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的。