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修改Excel数据的实例代码
Nov 01 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
python使用7z解压apk包的方法
Apr 18 Python
python递归计算N!的方法
May 05 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
python基础教程之五种数据类型详解
Jan 12 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
django-csrf使用和禁用方式
Mar 13 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-fpm 参数的深入理解
2013/06/03 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
php集成开发环境详解
2019/09/24 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
phpwind放自动注册方法
2006/12/02 Javascript
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python如何爬取动态网站
2020/09/09 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
餐饮采购员岗位职责
2014/03/15 职场文书
建筑结构施工求职信
2014/07/11 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS