2
我有一套測試,我寫的應用程序使用Django的默認身份驗證,但現在我添加了Atlassian Crowd作爲身份驗證方法,現在這些測試失敗,主要是因爲Crowd服務器不是當我想在家裏跑我的測試的時候,遠程認證的單元測試
每個應用程序都有這個在它的設置()方法
def setUp(self):
"""Set up the shared test data."""
self.client.login(username='admin', password='letmein')
我被註釋掉AUTHENTICATION_BACKENDS工作圍繞它的那一刻,但不會在CI服務器上運行。
我不認爲我得到的錯誤是很重要的,但對於完整性:
URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>
我嘗試添加這兩種身份驗證的後端到AUTHENTICATION_BACKENDS,我仍然會得到相同的結果。
什麼是我的選擇讓這些測試通過?
有什麼辦法可以強制用戶登錄嗎?我能以某種方式嘲笑授權對象嗎?
我可以在設置AUTHENTICATION_BACKENDS部分檢查它是否在測試模式下運行嗎?但後來我爲我的測試寫了特殊的情況,這種打敗對象。
這是行不通的,但這真的是最好的辦法嗎?從測試中更改設置或在設置中檢測什麼是env,有什麼區別?你在跑?無論哪種方式,您都不是在生產環境中測試代碼。 – 2011-06-06 00:03:34
如果您正在測試認證部分,那麼您是正確的。如果你只想測試代碼本身,而不是保護它的機制,那麼這可能是解決方案。 – 2011-06-06 03:29:03
的確如此,我認爲在這方面它與使用mock並不太相似。 – 2011-06-06 08:53:59