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": ""
"os": "ios"
"sign": ""
"is-test": "" #设置的超时时间
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
Python+request 获取响应(elapsed)和响应时间(timeout)《七》的更多相关文章
- python request获取ip、获取登录设备
from flask import request 获取ip request.remote_addr 获取登录设备 request.user_agent.string
- python request 获取cookies value值的方法
import requests res = requests.get(url) cookies = requests.utils.dict_from_cookiejar(res.cookies) pr ...
- request的响应时间elapsed和超时timeout
前言:requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的 1.获取接口请求的响应时间 r.elapsed.total_seconds() import ...
- python获取响应某个字段值的三种方法
近期将要对两个接口进行测试,第一个接口的响应值是第二个接口的查询条件.为了一劳永逸,打算写个自动化测试框架.因为请求和响应都是xml格式的,遇到的问题就是怎么获取xml响应的某一个值.尝试了很多博客的 ...
- Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据
Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...
- Python + request接口测试中Cookie和Session的获取和使用
Cookie和Session的简单理解 由于Http协议是无状态的,所以产生了cookie和session进行状态的管理. 从哪里来,在哪里,到哪里去: --> Cookie是由服务端生成,存 ...
- python+request 常用基础学习笔记
1.pycharm,避免控制台输出的json内容中文出现乱码. #注:乱码为Unicode格式:\u6d4b\u8bd5.加入如下代码后正确返回中文:测试 get_result = r.json() ...
- (转)python request用法
强烈推荐!requests官方文档已有了中文版,请见http://cn.python-requests.org/zh_CN/latest/ requests是python的一个HTTP客户端库,跟ur ...
- Python+request超时和重试
Python+request超时和重试 一.什么是超时? 1.连接超时 连接超时指的是没连接上,超过指定的时间内都没有连接上,这就是连接超时.(连接时间就是httpclient发送请求的地方开始到连接 ...
随机推荐
- rewrite重写基础实列
nginx 重写 rewrite 基础及实例 nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不 ...
- FineReport做成之后如何在Tomcat上运行
问题描述: 自己用FineReport做成的报表画面,要在Tomcat上运行启动 第一步:下载Tomcat 网址: http://tomcat.apache.org/download-80.cgi 下 ...
- ${__setProperty(row,rowNum)};不能在import XXX后面使用;
如下 ${__javaScript只能用一次调用 excel.CWResultFile.CWOutputFile.wOutputFile("/Users/iot/1.xls", & ...
- PHP和Memcached - Memcached的安装
1.现有扩展对比 memcache memcached 实现方式 原生 局域libmemcached的类库,性能高 编程方式 面向过程.对象 面向对象 CAS命令 NO YES php7 NO Y ...
- python学习-16 列表list
list 1.由[ ]括住,中括号内各元素由逗号隔开,各元素可以是数字,字符串,列表,布尔值等等. 例如: li = [521,"love",["john",& ...
- I2C初始化结构体详解
typedef struct { uint32_t I2C_ClockSpeed; /*设置SCL时钟频,此值不低于40000*/ uint16_t I2C_Mode; /* 指定工作模式,可选I2C ...
- UPUPW Apache5.5系列本地开发环境配置
UPUPW Apache5.5系列 1. 在官网下载 Apache5.5系列,选择云端下载. 官网地址: http://www.upupw.net/aphp55/n110.html 2. 下载后,将压 ...
- Windows计划任务无法写Log的问题
参照:https://www.cnblogs.com/jonezzz/p/10364153.html 使用WIndows计划任务去执行Exe文件时无法写Log,而Exe双击执行就能写Log,这是由于计 ...
- ligerui tab 部分记载
打开一个Tab $(".strength_box").click(function () { var id = $(this).attr("data"); va ...
- [APB VNext 笔记] UI
一直想给我做的服务写UI.但苦于现在ABPVNext框架对SPA支持不好.只好先放弃VUE.先弄个UI在说.ABPVNext中的框架都是用Helper封装好的Label.不知道怎么使用,于是翻源代码. ...