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用来获得图片exif信息的库实例分析
Mar 16 Python
Python中关于使用模块的基础知识
May 24 Python
python安装与使用redis的方法
Apr 19 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
python实现简单名片管理系统
Nov 30 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 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编程与应用
2006/10/09 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
Angularjs 基础入门
2014/12/26 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
Python正则表达式完全指南
2017/05/25 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
简单了解django缓存方式及配置
2019/07/19 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
党员承诺书内容
2014/03/26 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
标准单位租车协议书
2014/09/23 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
优秀党员申报材料
2014/12/18 职场文书
给学校的建议书400字
2015/09/14 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers