2010-07-22 22 views
1

我使用開發服務器在mac上開發我的django應用程序。當我運行manage.py test我可以用pdb中斷執行(因爲我也可以在運行該站點時運行)。'manage.py test'如何工作? (pdb問題)

當我將應用程序推送到運行apache2/nginx pdb的Linux生產服務器(Ubuntu)時,它不再適用於該網站。它拋出一個BdbQuit異常。當我跑manage.py test時,我發現它會起作用,但很驚訝地發現測試剛剛跳過pdb.set_trace()調用而沒有停下來。

這似乎暗示着manage.py test正在網絡服務器上運行,但這似乎違反直覺,因爲我的測試代碼是沒有任何HTTP的純python。

如果manage.py test掛鉤到網絡服務器有沒有辦法告訴它使用dev服務器?

我試過安裝ipdb,順便說一句,它做同樣的事情。

回答

1

你以某種方式錯誤地診斷了這個問題。說'manage.py測試運行在web服務器上'是沒有意義的。你的Django安裝甚至不知道有一個web服務器存在,除非它實際上是通過WSGI由該web服務器調用的 - 當你通過manage.py運行測試時顯然不是這種情況。

你確定你的測試運行正常嗎?嘗試將self.assertTrue(False)放入調用pdb的測試中,看看它們是否如您所期望的那樣失敗 - 在pdb之前和之後交替嘗試使用斷言並查看會發生什麼。

+0

對,我不認爲manage.py應該涉及到網絡服務器。這只是我的問題,因爲Web服務器是我的生產環境中除操作系統以外的主要區別,並且pdb不適用於生產服務器上的我,因爲它沒有設置爲。 – joel3000 2010-07-22 20:38:17