当前位置: 首页 > news >正文

JMeter+Python 实现异步接口测试

当使用JMeter和Python来实现异步接口测试时,可以按照以下步骤进行操作:

1、安装JMeter和Java Development Kit(JDK):

下载并安装JMeter(https://jmeter.apache.org/download_jmeter.cgi)和适用于操作系统的JDK。

2、编写JMX测试计划文件:

使用JMeter GUI创建和配置测试计划。打开JMeter,点击“File” > “Templates” > “Building a Web Test Plan” > “Create” 来创建一个新的测试计划。然后按照下面的步骤进行配置:

图片

线程组(Thread Group):设置线程数、并发用户数、循环次数等。
异步HTTP请求(Async HTTP Request):设置URL、请求方法、参数等。
断言(Assertion):设置断言规则,用于验证接口返回结果是否符合预期。
结果树(View Results Tree):用于查看接口响应和结果。

3、保存JMX文件:

点击“File” > “Save Test Plan As” 将测试计划保存为JMX文件。

4、编写Python脚本:

使用Python脚本来执行JMeter测试计划。下面是一个示例代码:

import subprocess jmeter_path = "/path/to/jmeter" # 替换为你的JMeter路径 
jmeter_test_plan = "/path/to/your_test_plan.jmx" # 替换为你的测试计划文件路径 def run_jmeter_test_plan(): cmd = [jmeter_path, "-n", "-t", jmeter_test_plan, "-l", "/path/to/result.jtl"] try: subprocess.check_call(cmd) print("JMeter test plan executed successfully.") except subprocess.CalledProcessError as e: print("JMeter test plan execution failed:", e) run_jmeter_test_plan()

在 Python 脚本中,需要将jmeter_path和jmeter_test_plan变量替换为实际路径和文件名。-l选项用于指定结果文件的输出路径。

5、运行Python脚本:

运行上述Python脚本,它将调用JMeter命令行来执行测试计划并将结果保存到指定的JTL文件中。

6、解析测试结果:

使用Python来解析JMeter的测试结果文件,获取相应的响应时间、错误信息等。可以使用Python的pandas库或者其他相关库来处理CSV或JTL格式的测试结果文件。

import pandas as pddef parse_results():results = pd.read_csv(result_file, delimiter=",", skiprows=1)# 获取响应时间信息response_times = results['Latency'].tolist()# 获取错误信息errors = results.loc[results['Success'] == False, 'ResponseMessage'].tolist()# 输出结果print("Response Times:", response_times)print("Errors:", errors)parse_results()

在这个示例中,使用pandas库来读取CSV文件,并跳过第一行的标题行(skiprows=1)。然后,通过访问相应的列来获取响应时间和错误信息。可以根据实际需求和结果文件的结构来解析并处理其他信息。pandas库提供了丰富的数据处理功能,可以使用其灵活的方法和函数来处理JMeter测试结果。

以上只提供了一个基本框架,实际的实现可能需要根据的具体需求和测试计划进行调整。可能需要额外的配置,如添加断言、设置定时器等来模拟异步请求。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

  • Windows环境搭建
  • Jenkins与Docker的自动化CI/CD流水线实践
  • 硬盘上不小心删除了重要文档?试试这6个成功率高的数据恢复工具!
  • billet-doux
  • Centos 7、Debian、Ubuntu中tree指令的检查与下载
  • sql 动态语句
  • Tower for Mac:强大的Git客户端,轻松管理代码版本,提升开发效率
  • [BJDCTF 2020]easy_md5
  • bodymovin:AE动画导出为JSONforMac/win中文版下载
  • Qt实现绘制自定义形状
  • 利用MATLAB进行矩阵运算(2)
  • 蓝牙运动耳机哪个好?蓝牙运动耳机排行榜前十名
  • 【Python3】【力扣题】349. 两个数组的交集
  • flink的集成测试
  • Redis-主从与哨兵架构
  • Fastjson的基本使用方法大全
  • Java到底能干嘛?
  • jquery ajax学习笔记
  • js递归,无限分级树形折叠菜单
  • js正则,这点儿就够用了
  • LeetCode算法系列_0891_子序列宽度之和
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python_OOP
  • Python利用正则抓取网页内容保存到本地
  • vue自定义指令实现v-tap插件
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 使用 @font-face
  • - 转 Ext2.0 form使用实例
  • 最简单的无缝轮播
  • ​一些不规范的GTID使用场景
  • #include<初见C语言之指针(5)>
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十五)使用Nexus创建Maven私服
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net流程开发平台的一些难点(1)
  • @Conditional注解详解
  • @RequestMapping-占位符映射
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [BUG] Authentication Error
  • [Design Pattern] 工厂方法模式
  • [IOI2007 D1T1]Miners 矿工配餐
  • [Leetcode] Permutations II
  • [LeetCode]-225. 用队列实现栈-232. 用栈实现队列