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双向链表实现实例代码
Nov 21 Python
Django中反向生成models.py的实例讲解
May 30 Python
三步实现Django Paginator分页的方法
Jun 11 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
python getpass实现密文实例详解
Sep 24 Python
Python 使用type来定义类的实现
Nov 19 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
Python netmiko模块的使用
Feb 14 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
jquery tools之tooltip
2009/07/25 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
js重写方法的简单实现
2016/07/10 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
微信小程序实现animation动画
2018/01/26 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
浅谈Python中的私有变量
2018/02/28 Python
python MySQLdb使用教程详解
2018/03/20 Python
python读取和保存视频文件
2018/04/16 Python
Scrapy框架使用的基本知识
2018/10/21 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Python常用编译器原理及特点解析
2020/03/23 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
如何获得EntityManager
2014/02/09 面试题
劳动竞赛活动方案
2014/02/20 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
对标管理实施方案
2014/03/12 职场文书
中学生家长评语大全
2014/04/16 职场文书
生日答谢词
2015/01/05 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书