Python+request 獲取響應(elapsed)和響應時間(timeout)《七》


requests發請求時,接口的響應時間,也是我們需要關注的一個點,如果響應時間太長,也是不合理的。
如果服務端沒及時響應,也不能一直等着,可以設置一個timeout超時的時間

具體的實現如下:

  超時(默認單位:s):

        timeout=0.5:設置到不大於0.5s的超時時間

            timeout=(0.5,0.8):設置區間時間的等待

    當出現超時時,則會拋出此異常:requests.exceptions.ConnectTimeout: HTTPConnectionPool    

  獲取響應時間:

      r.elapsed.total_seconds()  

       

#-*- coding:utf-8 -*-
import requests from requests import exceptions try: #timeout=0.1 ,timeout=(0.5,0.8)
    r = requests.post(url=url, data=data, headers=headers, verify=False, timeout=0.5)

   r.elapsed.total_seconds() #獲取實際的響應時間
   print r.json()
except exceptions.Timeout as e: 

  print("拋出異常")

 

進階:

     如需要統一所有的測試接口的超時時間都可設置一致的話,那么只需要將timeout添加到配置文件中,統一進行管控即可,在測試的接口中timeout直接給定參數,那么在后期的更改timeout的超時時間,只在配置文件中更改即可。如果timeout的超時時間不需要那么的統一,則只需在每個請求的接口中寫即可。

示例:

(1)在   host_header.yaml  的配置文件中添加timeout

########################## 測試環境,通用的headers配置 ###################################### #請求接口的url的域名
host: https://testapp.goodiber.com/v2/   #dev1的測試環境域名


#請求接口的請求頭中的共用參數
headers: "version": "2.3.0"
  "version-id": "238"
  "os": "ios"
  "sign": "123456"
  "is-test": "1"

#設置的超時時間
timeout: 10

 

(2)在使用的py文件,login.py 文件中調用即可。

import yaml import sys,os import json # 導入yaml中的host
reload(sys) sys.setdefaultencoding("utf-8") root_path = os.getcwd()[:-5] with open(root_path + "/Config/host_header.yaml", 'rb') as f: data = yaml.load(f) host = data["host"] timeout = data["timeout"] .....前面的url、headers的編寫此處省略 r = requests.post(url=url, data=data, headers=headers, verify=False,timeout = timeout) #直接給定timeout參數即可 get_reponse = r.json() # 獲取到reponse返回的所有內容
 result = json.dumps(get_reponse, encoding="utf-8", ensure_ascii=False)   #將獲取到的reponse中的中文已utf-8的格式顯示。否則顯示Unicode

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM