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 相关文章推荐
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
Python转换时间的图文方法
Jul 01 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
python 求定积分和不定积分示例
Nov 20 Python
Python Django view 两种return的实现方式
Mar 16 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
Python序列化与反序列化相关知识总结
Jun 08 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中计算字符串相似度的函数代码
2012/12/29 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
临床医学专业毕业生的自我评价
2013/10/17 职场文书
企划专员岗位职责
2013/12/09 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
安全教育月活动总结
2014/05/05 职场文书
爱牙日活动总结
2014/08/29 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
老人院义工活动感想
2015/08/07 职场文书
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis