接口测试
时间:2021-07-21
本文章向大家介绍接口测试,主要包括接口测试使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
接口测试
#!/usr/bin/env python # -*- coding: utf_8 -*- import threading import requests import time import re from time import sleep # -------接口性能测试配置------- method = "get" # 接口类型 url = "http://www.baidu.com" # 接口地址 #headers = {'Id': 'test', 'time': '1626833059'} data = {"username": "admin", "password": "123456"} # 接口参数 thread_num = 20 # 线程数 one_work_num = 2 # 每个线程循环次数 loop_sleep = 1 # 每次请求时间间隔 response_time = [] # 平均响应时间列表 error = [] # 错误信息列表 class CreateThread: def __init__(self): pass @classmethod def thread_api(cls): global results try: if method == "post": results = requests.post(url, data) if method == "get": results = requests.get(url) #results = requests.get(url, headers) return results except requests.ConnectionError: return results # 接口函数 @classmethod def thread_response(cls): responsetime = float(CreateThread.thread_api().elapsed.microseconds) / 1000 return responsetime # 获取响应时间 单位ms @classmethod def thread_response_avg(cls): avg = 0.000 l = len(response_time) for num in response_time: avg += 1.000 * num / l return avg # 获取平均相应时间 单位ms @classmethod def thread_time(cls): return time.asctime(time.localtime(time.time())) # 获取当前时间格式 @classmethod def thread_error(cls): #@@@@@@@@ try: #pa = u"个人信息" #pattern = re.compile(pa) #match = pattern.search(CreateThread.thread_api().text) if CreateThread.thread_api().status_code == 200: pass #if match.group() == pa: # pass else: error.append(CreateThread.thread_api().status_code) except AttributeError: error.append("登录失败") # 获取错误的返回状态码 @classmethod def thread_work(cls): threadname = threading.currentThread().getName() print ("[", threadname, "] Sub Thread Begin") for i in range(one_work_num): CreateThread.thread_api() print ("接口请求时间: ", CreateThread.thread_time()) response_time.append(CreateThread.thread_response()) CreateThread.thread_error() sleep(loop_sleep) print ("[", threadname, "] Sub Thread End") # 工作线程循环 @classmethod def thread_main(cls): start = time.time() threads = [] for i in range(thread_num): t = threading.Thread(target=CreateThread.thread_work()) t.setDaemon(True) threads.append(t) for t in threads: t.start() # 启动所有线程 for t in threads: t.join() # 主线程中等待所有子线程退出 end = time.time() print ("========================================================================") print ("接口性能测试开始时间:", time.asctime(time.localtime(start))) print ("接口性能测试结束时间:", time.asctime(time.localtime(end))) print ("接口地址:", url) print ("接口类型:", method) print ("线程数:", thread_num) print ("每个线程循环次数:", one_work_num) print ("每次请求时间间隔:", loop_sleep) print ("总请求数:", thread_num * one_work_num) print ("错误请求数:", len(error)) print ("总耗时(秒):", end - start) print ("每次请求耗时(秒):", (end - start) / (thread_num * one_work_num)) print ("每秒承载请求数(TPS):", (thread_num * one_work_num) / (end - start)) print ("平均响应时间(毫秒):", CreateThread.thread_response_avg()) if __name__ == '__main__': CreateThread.thread_main()
接口访问时间测试
原文地址:https://www.cnblogs.com/Pythonzrq/p/15040426.html
- 挖坑无止境,来看看这个《this的指向》
- T-SQL Enhancement in SQL Server 2005[上篇]
- 初学js钻太深,不太好
- Linux shell 程序设计3——命令行程序
- Linux shell 程序设计2——bash的内置命令
- T-SQL Enhancement in SQL Server 2005[下篇]
- JS原型,a和b是不是失散多年的兄弟?
- Linux shell 程序设计1——安装及入门
- 偶遇--《坑新人--前端专用面试题》
- 简单的说下,(function(){...})() 与 (function(){...}()) 有什么区别?
- ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇]
- Shell常用命令小结
- 插入法排序
- ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 达梦数据库、oracle数据库如何判断指定表有没有建立索引?对应的表有没有索引查询方法
- Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
- 不支持图形化界面的Linux系统如何显示图像化界面?飞腾服务器显示图像化界面方法,DISPLAY environment variable is undefined问题解决方法
- 一分钟学Python| Python的函数(上)
- 数据分析与数据挖掘 - 07数据处理
- MySql8.0.19最新版本创建用户分配权限演示,You have an error in your SQL syntax权限分配问题解决方法
- linux服务器oracle数据库导出dmp文件功能演示,备份数据库命令。exp命令显示command not found解决方法,EXP-00028: 无法打开dmp进行写入问题解决
- oracle数据库exp命令导入导出dmp文件演示,oracle数据库备份还原功能
- oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
- 弄懂这 5 个问题,拿下 Python 迭代器!
- windows、linux下命令行登录oracle数据库方法,查询sga参数值sql语句
- oracle数据库查询open_cursors值的sql语句,达梦数据库查询MAX_SESSION_STATEMENT值方法,MAX_SESSION_STATEMENT的最大值、上限是多少。
- 达梦数据库启用日志方法,达梦数据库查看日志是否启用,达梦数据库日志文件位置查找
- JavaScript 技术篇 - js 查看哪个元素获取了焦点,js 指定元素获取焦点方法
- 工作10年后,再看String s = new String("xyz") 创建了几个对象?