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实现批量重命名文件的代码
May 25 Python
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
Python中的模块和包概念介绍
Apr 13 Python
python 生成器协程运算实例
Sep 04 Python
python实现逐个读取txt字符并修改
Dec 24 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
python 动态迁移solr数据过程解析
Sep 04 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 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的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
python中set()函数简介及实例解析
2018/01/09 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
python 默认参数相关知识详解
2019/09/18 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
学生实习自我鉴定
2013/10/11 职场文书
市场总监岗位职责
2015/02/11 职场文书
律师函格式范本
2015/05/27 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
win10清理dns缓存
2022/04/19 数码科技