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发送请求的地方开始到连接 ...
随机推荐
- [转帖]MMU内存管理单元
MMU内存管理单元 https://www.cnblogs.com/alantu2018/p/9002309.html 之前对这一块一直不理解 最近学习了点 CPU time slice 以及 con ...
- PS复制图层快捷键
选中图层,按“Ctrl + J”即可快速复制图层.
- Feign【token传递】
使用feign调用服务的时候,存在一个问题,比如当前服务调用A服务,在请求头中包含了某些特殊的字段信息,比如当前操作人的token信息,调用A的时候可以正常拿到token,然而在去调用B服务的时候,可 ...
- Python 【类与对象】
类与对象 把类的个例就叫做实例 (instance),可理解为“实际的例子”类是某个特定的群体,实例是群体中某个具体的个体 Python中的对象等于类和实例的集合:即类可以看作是对象,实例也可以看作是 ...
- linux程序设计--进程相关的各种ID
1.调用exec函数时,目标可执行文件没有设定设置用户id. 2.调用exec函数时,目标可执行文件设定设置用户id.
- 防止vi粘贴时自动添加缩进的方法
使用Xshell连接Linux服务器,使用vi打开文件进行粘贴时,会自动在行首添加很多空格,导致格式错乱.可以用如下方法剞劂 在拷贝前输入:set paste (这样的话,vim就不会启动自动缩进,而 ...
- Linux十大顶级发行版本
当前顶级发行版概览 对于Linux新手来说,在各发行版之间困惑得进行选择和不断增加的数量实在令人头晕.这就是写作本文的原因,其中列出的10个(附加一个值得一提的FreeBSD,BSD一族中最为流行 ...
- Comet OJ Contest #3
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
- 使用jdk8 stream简化集合操作
使用stream的前提是对lambda表达式和函数式接口有一定的了解,同时对方法引用和普通传参的区别有一定的认识. stream的三大特性:1.不存储数据2.不改变源数据3.延时执行. stream优 ...
- gin框架实现一个简单的项目 ③
承接:gin框架封装自己的路由 ② 对于一个项目来说,需要将各个功能模块分开,也就是所谓的三层模型,这里介绍一下个人的做法: contorller主要负责路由 model主要负责程序输入输出的数据 s ...