簡體   English   中英

如何編寫單元測試以確保我的代碼遵循HTTP重定向?

[英]How to write unit tests to ensure my code follows HTTP redirects?

我正在使用requests模塊在模塊內部進行HTTP調用。

我了解這:

r = requests.post('http://github.com', allow_redirects=True)

將遵循HTTP重定向。

當然,我從自己的模塊API多次調用requests ,並且我想編寫一個單元測試以確保請求始終遵循重定向。 我應該怎么做?

乍一看,我的想法是在測試中啟動一個簡單的HTTP服務器以模仿HTTP調用。 我不確定如何模擬出整個依賴網絡通信的requests方法調用。

如果要求您的代碼始終遵循重定向,那么我將在接口函數中對此進行顯式編碼。 然后堅持所有對requests.post調用都是通過您的函數進行的。 以最簡單的形式,這只是一個包裝方法:

def my_post(*args, **kwargs):
    return requests.post(*args, allow_redirects=True, **kwargs)

如果您想保留現有的API,而只是覆蓋其行為,則可以在運行時進行猴子補丁和裝飾第三方功能

您應該避免測試該庫本身執行了重定向。 那應該在其他地方進行測試,大概是您信任該庫。 您需要測試的是正確調用庫函數。 這是一般原則。

這令你的測試很簡單:只是嘲笑調用requests.post ,並確認您想要的參數,包括allow_redirects=True ,被傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM