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实现下载指定网址所有图片的方法
Aug 08 Python
python 数据的清理行为实例详解
Jul 12 Python
Python微信公众号开发平台
Jan 25 Python
windows下python和pip安装教程
May 25 Python
Python面向对象之类和对象实例详解
Dec 10 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
python关于调用函数外的变量实例
Dec 26 Python
python连接PostgreSQL过程解析
Feb 09 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
Django实现图片上传功能步骤解析
Apr 22 Python
python实现人工蜂群算法
Sep 18 Python
Python监听剪切板实现方法代码实例
Nov 11 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
用文本作数据处理
2006/10/09 PHP
一个ubbcode的函数,速度很快.
2006/10/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Django的session中对于用户验证的支持
2015/07/23 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
详解Python:面向对象编程
2019/04/10 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
九州传奇上机题
2014/07/10 面试题
银行柜员求职自荐书
2014/06/18 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript