我想編寫一個直接執行HTTP請求(而不是使用django.test.client.Client)的單元測試。從Django測試中訪問Django testserver
如果您好奇的原因 - 這是因爲我想測試從我的Django應用程序公開的Thrift-over-HTTP API - 我想在單元測試中使用Thrift客戶端。
問題是在測試期間,服務器實際上並未運行。當使用django.test.client.Client時,它將簡單地調用視圖函數而不是實際發出HTTP請求。 (請糾正我,如果我錯了。)
那麼強制測試框架啓動HTTP服務器的最佳方法是什麼?
我試着寫一個bash腳本,它是這樣的:
./manage.py testserver --addrport 7000 &
PID=$!
sleep 5
./manage.py test --no-input
kill $PID
但這是凌亂的(並沒有真正的工作),因爲1)我需要睡眠(否則測試開始前,數據庫由測試服務器初始化); 2)測試將嘗試再次初始化數據庫(在測試服務器已經初始化之後)。
任何其他解決方案?
謝謝。
感謝您的好的答案!聽起來像是對我來說過分殺傷了。我想我現在就去簡單的方法。這將是:寫一個正常的測試(不是Django - 所以它不會混淆數據庫),它連接到測試服務器,應該事先啓動。在測試setUp中,如果連接失敗,請顯示一條好消息,如「請啓動您的Django測試服務器」。 :) – ibz 2009-06-18 14:48:05