python实现接口压力测试

news2025/1/18 9:54:45

python实现接口压力测试

直接上代码:

# -*- coding: utf-8 -*-

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 Interface_pressure_test():
    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(int(num)):
            restime.append(Interface_pressure_test.API(URL2,param)[1])
            if json.loads(Interface_pressure_test.API(URL2, param)[2])["message"]=='ok':
                OK.append(json.loads(Interface_pressure_test.API(URL2, param)[2])["message"])
                logger.info('请求第' + str(i+1) + '次,请求'+json.loads(Interface_pressure_test.API(URL2, param)[2])["message"]+',状态码:'+json.loads(Interface_pressure_test.API(URL2, param)[2])["status"])
            else:
                logger.info('请求第' + str(i+1) + '次,请求' + json.loads(Interface_pressure_test.API(URL2, param)[2])["message"] + ',状态码:' +
                            json.loads(Interface_pressure_test.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__':
    Interface_pressure_test = Interface_pressure_test()
    num = input('请输入次数:') #压力测试次数
    URL2 = 'http://www.kuaidi100.com/query'  #地址
    param = {'type' : 'zhongtong' , 'postid' :'73116039505988' }  #参数
    Interface_pressure_test.circulation(num,URL2,param)
    input('Press Enter to exit...') 

输出20次压测结果如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux sed命令巨好用

sed命令介绍 find ./ -type d | grep rtos-kitfind ./ -type d 是一个在Linux终端中使用find命令的示例。让我们逐步解释这个命令: find: 这是用于在文件系统中查找文件和目录的Linux命令。 ./: 这是指当前目录(工作目录),fin…

Java - List

List 接口基本介绍 1、List集合类中的元素是有序的,即添加顺序和取出顺序一致,先进先出。List中的元素可重复 2、List集合中的每个元素都有其对应的顺序索引,即支持索引 3、List容器中的元素都对应一个整数型的序号,记载其在容…

全国首个!武大又一新地标,有大势智慧的身影...

本文转载自武汉大学 数字缔造平行时空 古今交汇,千里相约 在武汉大学月湖旁的文科大楼里 藏着一个神秘的剧场 历史厚重的“文化遗产” 性能卓越的“智能计算” 据说这里有很多“新奇”剧目 见你所未见 闻你所未闻 快和珞珞珈珈一起去看看! 珞珈…

重新设置mysql的root用户密码

创建一个txt文档,定义修改密码的SQL语句 ALTER USER rootlocalhost IDENTIFIED BY 1234567; 这里的localhost 表示只允许本地登录,如果改成%表示允许本地登录,也允许远程登录。 1234567就是新密码 管理员身份打开Windows PowerShell&#x…

【重温篇】八大排序——堆排序

完全二叉树 首先复习一下完全二叉树:数据从上到下,从左到右依次进行排列 堆排序 第一步 利用完全二叉树构建大顶堆 大顶堆:父节点的值大于或等于其左右孩子的值(构建方法如下) 1.定义一个parent游标,…

MyBatisPlus数据自动加解密存取和字段防篡改有效性校验码自动生成存储处理器

整体原理:用Mybatis拦截器拦截ResultSetHandler,做属性解密和完整性校奏。替换默认的ParameterHandler处理器。做属性加密存储和完整性加密存储。 代码结构如下: 各功能类解释: 1、EntityClassResolver:用于解析当前M…

Spring创建Ajax和接受Ajax数据-spring20

建一个AJAX.jsp页面 发送Ajax请求一般用jQuery 引入jQuery 引入文件: 弄一个请求 获得集合参数第二种应用场景 requestBody 的意思请求体 为什么找不到JQuery文件,原因是:前端控制器的配置:缺省,客户端发送请求&…

postgresql 数据库 面试题整理

postgresql 数据库 面试题整理 文章目录 postgresql 数据库 面试题整理前言pg数据库的特点:pg的优点pg的核心优势pg数据库的一些缺点PostgreSQL支持的各种数据类型pg的模式pg的多版本并发控制pg多版本并发控制(MVCC)介绍pg如何提供安全性Post…

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目,为了避免全量引入 vant 导致打包体积过大,又不想一个一个组件手动导入,所以就选择了 vant 官方推荐的方法,使用 unplugin-vue-components 插件自动引入组件,并按需引入组件的样式…

需求条目化与自动估算强强联合 助力软件估算自动化

痛点: 需求是产品的源头,是项目规模估算的基石。而传统的软件规模估算是由项目成员手工进行,对人员能力、经验、方法都有一定的要求,但是效果不好而且耗时费力,不能保持规模估算的一致性。 而导致这些问题的原因&#…

A plugin must either be a function or an object with an “install“ function

前言: 最近一个项目使用了vue3tsvite模型框架,在框架的基础之上进行的开发,开发过程中遇到一个问题,控制台有提示信息,如下图: 小小一行黄字,恶心人呀。。。 这话的意思大概是:插件…

中国人民大学与加拿大女王大学金融硕士--中外合作办学硕士领域的宝藏项目

大多数读研人都知道,从办学方式来看,中外合作办学硕士可以分为两种: 一是双学位教育项目,颁发的是外方高校硕士学位证书,同时还可以申请国内高校的硕士学位证书,同时教育部中留服还可以做学历学位认证。 二…

有哪些屏幕录制软件?这几种录屏工具了解一下

有哪些好用的屏幕录制软件呢?如果我们需要教别人如何使用某个软件或者如何完成某个任务,录屏也是非常有用的。可以通过录屏记录下整个过程,然后用于制作教程视频。也有小伙伴在打游戏时,遇到精彩操作有录屏的习惯,那么…

一文解惑mybatis中的#{}和${}

目录 基本概述 #{}的基本使用 ${}的基本使用 ${}使用情况 sql排序asc|desc 拼接表名 批量删除 模糊查询 基本概述 #{}:先编译sql语句,再给占位符传值,底层是PreparedStatement实现。可以防止sql注入,比较常用。 ${}&…

在Windows下安装Anaconda平台

Anaconda介绍 安装Python的方法有很多,其中利用Anaconda来安装,是最为安全和便捷的方法之一。在Python中安装类库,各个类库之间可能存在相互依赖、版本冲突等问题。为了解决这个问题,Python社区提供了方便的软件包管理工具&#…

css背景毛玻璃效果

一、结论:通过 css 的 backdrop-filter 属性设置滤镜函数 blur 一般会是有 背景色、透明度 的容器,如: /* 宽高等其他设置这里省略没写 */ background:rgba(3, 87, 255, 0.3); backdrop-filter: blur(10px);二、backdrop-filter 的其他用法…

ffmpeg学习之音频解码数据

音频数据经过解码后会被保存为,pcm数据格式。而对应的处理流程如下所示。 avcodec_find_encoder() /*** 查找具有匹配编解码器ID的已注册编码器.** param id AVCodecID of the requested encoder* return An encoder if one was found, NULL otherwise.*/ const A…

C# 移除链表元素

203 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2&#x…

机器学习(14)--XGBoost

目录 一、概述 二、CART、GB、GBDT 1、CART 2、BT(Boosting Tree提升树) 3、GBDT(梯度提升树) 4、GBDT在sklearn中的损失函数 三、Sklearn中的GBDT 1、加载模块 2、划分数据集 3、建模 4、与随机森林和线性回归对比 5…

Redis可视化工具 - Another Redis Desktop Manager 安装与使用详细步骤

一、下载安装 Another Redis Desktop Manager AnotherRedisDesktopManager 发行版 - Gitee.com(gitee) 2. 安装 以管理员身份运行下载的安装包 选择是为所有用户还是当前用户安装,按需选择 选择安装位置,点击安装进行安装 安装…