python+requests接口压力测试500次,查看响应时间的实例


Posted in Python onApril 30, 2020

接口压力测试500次,查看响应时间

import json
import requests
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
restime = []
OK=[]
class Restime():
 def API(self,URL2,param):
  try:
   r = requests.get(URL2, params=param, timeout=10)
   r.raise_for_status() # 如果响应状态码不是 200,就主动抛出异常
  except requests.RequestException as e:
   print(e)
  else:
   js = json.dumps(r.json())
   return [r.json(), r.elapsed.total_seconds(),js]
 def circulation(self,num,URL2,param):
  for i in range(num):
   restime.append(Restime.API(URL2,param)[1])
   if json.loads(Restime.API(URL2, param)[2])["message"]=='ok':
    OK.append(json.loads(Restime.API(URL2, param)[2])["message"])
    logger.info('请求第' + str(i+1) + '次,请求'+json.loads(Restime.API(URL2, param)[2])["message"]+',状态码:'+json.loads(Restime.API(URL2, param)[2])["status"])
   else:
    logger.info('请求第' + str(i+1) + '次,请求' + json.loads(Restime.API(URL2, param)[2])["message"] + ',状态码:' +
       json.loads(Restime.API(URL2, param)[2])["status"])
  print('测试次数:',num)
  print('响应次数:', len(restime))
  print('正常响应次数:', len(OK))
  print('总响应最大时长:', max(restime))
  print('总响应最小时长:', min(restime))
  print('总响应时长:', sum(restime))
  print('平均响应时长:', sum(restime) / len(restime))
if __name__ == '__main__':
 Restime=Restime()
 #URL2 = 'http://wthrcdn.etouch.cn/weather_mini'
 #param = {'ip': '8.8.8.8', 'city': '西安'}
 num=500 #压力测试次数
 URL2 = 'http://www.kuaidi100.com/query' #地址
 param = {'type' : 'zhongtong' , 'postid' :'73116039505988' } #参数
 Restime.circulation(num,URL2,param)
 input('Press Enter to exit...')
测试次数: 500
响应次数: 500
正常响应次数: 500
总响应最大时长: 0.336179
总响应最小时长: 0.062753
总响应时长: 41.892936000000034
平均响应时长: 0.08378587200000007

python+requests接口压力测试500次,查看响应时间的实例

补充知识:python利用requests统计1个接口的响应时间

requests统计接口的响应时间有2种方式

r.elapsed.total_seconds()
r.elapsed.microseconds/(1000*1000)

但是第2种方式,当调用的接口响应时间大于1s时,得到的响应时间是不准确的。下面来看示例

首先看接口响应时间小于1s时,分别使用2种方式得到 post "https://www.baidu.com/" 的响应时间

代码示例:

import requests
url = "https://www.baidu.com/"
r = requests.post(url)
# print(r.text)
#推荐使用这种方式统计一个接口的响应时间,准确性更高
print(r.elapsed.total_seconds())
#当接口的响应时间大于1s时,下面这种统计方式就会不准确
print(r.elapsed.microseconds/(1000*1000))

运行结果:

0.039872
0.039872

再测试一个接口响应时间超过1s的接口,

然后看接口响应时间大于1s时,分别使用2种方式得到 post "http://cn.python-requests.org/zh_CN/1atest/" 的响应时间

果然发现2种方式统计的结果不一样了呢

import requests
url = "http://cn.python-requests.org/zh_CN/1atest/"
r = requests.post(url)
# print(r.text)
#结果正确
print(r.elapsed.total_seconds())
#结果不正确
print(r.elapsed.microseconds/(1000*1000))

运行结果:

1.298427
0.298427

很显然,r.elapsed.microseconds/(1000*1000)在接口的响应时间大于1s时,只截取了后面的小数部分

以上这篇python+requests接口压力测试500次,查看响应时间的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过字典dict判断指定键值是否存在的方法
Mar 21 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
Python isinstance函数介绍
Apr 14 Python
Python ldap实现登录实例代码
Sep 30 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
python使用response.read()接收json数据的实例
Dec 19 Python
python网络应用开发知识点浅析
May 28 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
Django Model中字段(field)的各种选项说明
May 19 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
Pycharm连接远程服务器过程图解
Apr 30 #Python
python3发送request请求及查看返回结果实例
Apr 30 #Python
python获取响应某个字段值的3种实现方法
Apr 30 #Python
如何在python中执行另一个py文件
Apr 30 #Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 #Python
Python实现转换图片背景颜色代码
Apr 30 #Python
Python requests.post方法中data与json参数区别详解
Apr 30 #Python
You might like
php生成缩略图的类代码
2008/10/02 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
PHP精确计算功能示例
2016/11/29 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
PDO::setAttribute讲解
2019/01/29 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
一起来写段JS drag拖动代码
2010/12/09 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
Vue入门之数据绑定(小结)
2018/01/08 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
Python httplib模块使用实例
2015/04/11 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python API自动化框架总结
2019/11/12 Python
在python shell中运行python文件的实现
2019/12/21 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
奥地利网上书店:Weltbild
2017/07/14 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
学生学习总结的自我评价
2013/10/22 职场文书
高一新生军训感言
2014/03/02 职场文书
python实现高效的遗传算法
2021/04/07 Python
MySQL注入基础练习
2021/05/30 MySQL
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle