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的垃圾回收机制深入分析
Jul 16 Python
在Python中使用元类的教程
Apr 28 Python
Python计算一个文件里字数的方法
Jun 15 Python
python查看列的唯一值方法
Jul 17 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
pygame游戏之旅 添加碰撞效果的方法
Nov 20 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
python随机生成库faker库api实例详解
Nov 28 Python
tensorflow多维张量计算实例
Feb 11 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 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
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
php二维数组排序详解
2013/11/06 PHP
php 实现进制相互转换
2016/04/07 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python中is和==的区别详解
2018/11/15 Python
python自动化之Ansible的安装教程
2019/06/13 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
送餐员岗位职责范本
2014/02/21 职场文书
应届毕业生自荐书
2014/06/18 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
入党个人总结范文
2015/03/02 职场文书
汽车车尾标语大全
2015/08/11 职场文书
创业计划书之熟食店
2019/10/16 职场文书
前端JavaScript大管家 package.json
2021/11/02 Javascript