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 29 Python
Python Socket传输文件示例
Jan 16 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
深入分析python中整型不会溢出问题
Jun 18 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
python读取文件名并改名字的实例
Jan 07 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
pandas的排序和排名的具体使用
Jul 31 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 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
2006/12/14 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
python实现录音小程序
2020/10/26 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
keras topN显示,自编写代码案例
2020/07/03 Python
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
学习十八届三中全会精神实施方案
2014/02/17 职场文书
詹天佑教学反思
2014/04/30 职场文书
小学生校园广播稿
2014/09/28 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
运动会表扬稿范文
2015/05/05 职场文书
战友聚会致辞
2015/07/28 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
优秀员工演讲稿
2019/06/21 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
Go语言入门exec的基本使用
2022/05/20 Golang