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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
python中global用法实例分析
Apr 30 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
python中requests库session对象的妙用详解
Oct 30 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
Python解决走迷宫问题算法示例
Jul 27 Python
python+opencv实现阈值分割
Dec 26 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 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
优化使用mysql存储session的php代码
2008/01/10 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
JS交换变量的方法
2015/01/21 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
vue之浏览器存储方法封装实例
2018/03/15 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
js回调函数仿360开机
2019/12/26 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python字典简介以及用法详解
2016/11/15 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
用python解压分析jar包实例
2020/01/16 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
品牌服务方案
2014/06/03 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python