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类的继承实例详解
Mar 30 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
PyQt5下拉式复选框QComboCheckBox的实例
Jun 25 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
PYcharm 激活方法(推荐)
Mar 23 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
python脚本框架webpy模板赋值实现
Nov 20 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的配置文件php.ini
2006/10/09 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
PHP实现百度人脸识别
2019/05/06 PHP
javaScript中Math()函数注意事项
2015/06/18 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
python调用支付宝支付接口流程
2019/08/15 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python向图片里添加文字
2019/11/26 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
小学教师听课制度
2014/02/01 职场文书
万年牢教学反思
2014/02/15 职场文书
人事部专员岗位职责
2014/03/04 职场文书
员工辞职信怎么写
2015/02/27 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书