2014-11-07 73 views
1

我正在爲仍在開發中的第三方服務製作一個基於Python的REST客戶端。問題是要測試/驗證客戶端能夠在各種情況下工作。包括不正確的迴應如何爲不可靠的服務器單元測試REST客戶端?

客戶端使用Requests library進行遠程REST調用(主要是GET和POST)。而對於單元測試,我正在考慮使用HTTPretty模塊來模擬/模擬服務器響應。

問題是如何處理可能的測試用例的數量。考慮以下組成的API;

REQUEST(GET)= http://example.com/new_api?param1=34&param2=hello

RESPONSE = {"value1":34,"value2":"a string"}

我發現自己需要編寫單元測試用例下列方案 -

  • 客戶端發送的參數正確數目
  • 客戶端發送錯誤的參數值
  • 客戶端缺少參數
  • 服務器對上述情況的正確反應
  • 服務器不發送回所有所需的值
  • 服務器混淆值參數(返回一個字符串,而不是一些)
  • 服務器發送的,而不是JSON
  • 回HTML ...等

所有這些廣泛的測試背後的意圖是幫助確定錯誤可能源於哪裏。即它是我的客戶有問題還是第三方服務器?

有誰知道組織Python測試套件以適應這些情況的好方法嗎?編寫單元測試函數感覺就像它將成爲一個永無止境的任務...... :(

回答

0

單元測試的目標是測試你認爲的所有情況,你可能必須處理錯誤。另一方面你不需要測試系統已經自然處理的東西

請注意,HTTP是一種應用程序級別的協議,客戶端總是發起請求,服務器只是響應,所以我的意思是因爲你正在開發客戶端,所以你不對服務器響應負責,你的目標只是發送適當的請求。

另一方面,有HTTP響應可能觸發客戶端的行爲。這些你想測試。例如,服務器回答301,並且您想通過發起下一個請求來測試您的客戶端是否正確,並獲取Location: HTTP標頭值。

對於REST API(也稱爲超文本驅動),您的客戶端將解析HTTP響應的內容,特別是鏈接集和/或rel關聯值的內容。基於這些價值觀,客戶可以做出決定或向用戶公開可能的選擇。這些你必須測試。

如果服務器在裏面沒有給出裏面的信息用於在客戶端繼續探索的HTTP響應,那麼它不是REST API,而是完全有效的HTTP API。就那麼簡單。它變得更容易測試。沒什麼可做的。

相關問題