基於python的性能負載測試Locust-6-腳本編寫之使用HTTP client

使用HTTP client

每一個HttpLocust實例的client屬性中都有一個HttpSession實例。HttpSession類是requests.Session的子類而且經過get,post,put,delete,head,patch和options方法發送HTTP請求,而後用做Locust的統計報告。HttpSession實例保存了coookies,能夠用於登陸網站而且在不一樣的requests之間保持session。client屬性也能夠被Locsut實例的TaskSet實例所引用,方便從新獲得client而且在任務裏發送HTTP請求。python

下面是對/about路徑發送GET請求的例子(假設self是TaskSet或者HttpLocust類的實例):安全

response = self.client.get("/about") print "Response status code:", response.status_code print "Response content:", response.content 

下面是關於POST請求的例子:session

response = self.client.post("/login", {"username":"testuser", "password":"secret"}) 

安全模式

HTTP client被配置成在安全模式下運行。由於鏈接錯誤,超時,或者其它相似錯誤引發的請求失敗都不會拋出異常,而是返回一個空響應對象。這個請求將被統計爲失敗。返回的空響應的content屬性被設置爲None,而且status_code被設置爲0。ide

手動設置一個請求爲成功或者失敗

默認HTTP響應爲2xx以外的請求將被標識爲失敗。大部分時候這樣判斷都沒問題,可是有時候返回404是咱們指望的結果,而200不是咱們指望的,那麼就須要手動設置成功或者失敗。post

即便響應碼是正常的咱們也能夠經過catch_response和with語句標識這個請求爲失敗:網站

with client.get("/", catch_response=True) as response: if response.content != "Success": response.failure("Got wrong response") 

一樣的若是一個請求的響應爲HTTP錯誤碼,咱們也能夠標識它的結果爲成功:url

with client.get("/does_not_exist/", catch_response=True) as response: if response.status_code == 404: response.success() 

經過動態參數進行URLs請求的分組

一些網站的頁面URLs包含一些動態參數,這種狀況也比較廣泛。通常狀況下,能夠傳遞name語句給HttpSession的不一樣request方法,從而實如今Locust的統計報告裏將這些URLs劃爲一組。spa

例子:code

# 這些request請求的統計結果將會被分組放在: /blog/?id=[id]
for i in range(10): client.get("/blog?id=%i" % i, name="/blog?id=[id]")
相關文章
相關標籤/搜索