news 2026/5/27 1:23:12

教你如何在JMeter中调用Python代码N种方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
教你如何在JMeter中调用Python代码N种方法

在性能测试领域,JMeter已经成为测试专业人士的首选工具,用于模拟用户行为、测量响应时间、评估系统性能。而现在大部分接口都会涉及到验签、签名、加密等操作,为了满足特定需求,我们需要更多的灵活性,比如引入Python来进行特定操作或处理复杂逻辑。(特别是针对一些只会Python编程, 不擅长Java的)

在JMeter中调用Python方法有很多,今天给大家先推荐几种。

方法一:利用beanshell+Runtime.getRuntime().exec()方法

Runtime.getRuntime().exec()方法是用于在 Java 应用程序中执行外部命令。它允许你调用操作系统的命令行工具或其他可执行程序。你可以将要执行的命令作为参数传递给 exec() 方法,并且它会返回一个 Process 对象,通过该对象你可以管理和控制外部进程的执行。需要注意的是,使用 exec() 方法执行外部命令时需要格外小心,以防止潜在的安全漏洞。

如下示例

  1. String command = "cmd /c python D:\\training\\python_work\\common\\auth.py";

  2. Runtime rt = Runtime.getRuntime();

  3. Process pr = rt.exec(command);

  4. pr.waitFor();

  5. BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));

  6. String line = "";

  7. StringBuilder response = new StringBuilder();

  8. while ((line = b.readLine()) != null) {

  9. response.append(line);

  10. }

  11. String response_data = response.toString();

  12. System.out.println("获取到的token值:"+response_data);

  13. b.close();

  14. vars.put("token",response.toString()); //把结果赋值给变量 ID ,方便后面调用

获取接口token解密过程是在auth.py中实现的,利用 Runtime.getRuntime().exec()执行python脚本

PS: 也可以利用OS Process Sampler取样器,在OS Process Sampler中,可以直接执行系统命令,这也包括执行Python脚本以及其他乱七八糟的脚本或者文件。

方法二:利用JSR223 Sampler+jython

要在JMeter中调用Python代码,也可以使用JSR223 Sampler元素来执行Python脚本操作步骤:

1、在https://www.jython.org/download下载jython-standaloneXXX.JAR

2、放到jmeter 的lib文件夹下,重启Jmeter。3、添加JSR223 Sampler (路径:Thread Group >Sampler>JSR223 Sampler

4、根据压测需求,编写python脚本即可。

示例:

  1. """该脚本用于加密登录信息"""

  2. import hashlib

  3. import sys

  4. import time

  5. import json

  6. def password_srt(pubkey, password):

  7. time_str = str(time.time())

  8. sign_str = str(pubkey) + time_str + str(password)

  9. sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()

  10. res = {'sign': sign, 'pubkey': pubkey, 'password': password}

  11. res = json.dumps(res)

  12. return res

  13. result = password_srt(123456789,987654321)

  14. log.info(result)

  15. vars.put("secrity",result)

方法三:利用pymeter库

pymeter库允许你在Python中实现类似JMeter GUI操作性能测试一样的效果。

项目地址:

https://github.com/eldaduzman/pymeter

依赖条件:

安装:

pip install pymeter

使用示例:

  1. """unittest module"""

  2. from unittest import TestCase, main

  3. from pymeter.api.config import TestPlan, ThreadGroupWithRampUpAndHold

  4. from pymeter.api.postprocessors import JsonExtractor

  5. from pymeter.api.reporters import HtmlReporter

  6. from pymeter.api.samplers import DummySampler, HttpSampler

  7. from pymeter.api.timers import UniformRandomTimer

  8. class TestTestPlanClass(TestCase):

  9. def test_1(self):

  10. json_extractor = JsonExtractor("variable", "args.var")

  11. timer = UniformRandomTimer(1000, 2000)

  12. http_sampler = HttpSampler(

  13. "Echo",

  14. "https://postman-echo.com/get?var=${__Random(0,10)}",

  15. timer,

  16. json_extractor,

  17. )

  18. dummy_sampler = DummySampler("dummy ${variable}", "hi dummy")

  19. tg = ThreadGroupWithRampUpAndHold(

  20. 10, 1, 60, http_sampler, dummy_sampler, name="Some Name"

  21. )

  22. html_reporter = HtmlReporter()

  23. tp = TestPlan(tg, html_reporter)

  24. stats = tp.run()

  25. print(

  26. f"duration= {stats.duration_milliseconds}",

  27. f"mean= {stats.sample_time_mean_milliseconds}",

  28. f"min= {stats.sample_time_min_milliseconds}",

  29. f"median= {stats.sample_time_median_milliseconds}",

  30. f"90p= {stats.sample_time_90_percentile_milliseconds}",

  31. f"95p= {stats.sample_time_95_percentile_milliseconds}",

  32. f"99p= {stats.sample_time_99_percentile_milliseconds}",

  33. f"max= {stats.sample_time_max_milliseconds}",

  34. sep="\t",

  35. )

  36. self.assertLess(stats.sample_time_99_percentile_milliseconds, 2000)

  37. if __name__ == "__main__":

  38. main()

执行后,自动生成output目录,并生成index.hmtl报告和.jtl结果文件。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 6:24:45

Open-AutoGLM部署难题全解析,一文解决99%常见错误

第一章:Open-AutoGLM开源实操指南环境准备与项目克隆 在开始使用 Open-AutoGLM 前,需确保本地已安装 Python 3.9 和 Git。推荐使用虚拟环境以隔离依赖。创建虚拟环境:python -m venv open-autoglm-env激活环境(Linux/macOS&#x…

作者头像 李华
网站建设 2026/5/26 5:09:14

2025最新!专科生必备9个AI论文平台测评与推荐

2025最新!专科生必备9个AI论文平台测评与推荐 2025年专科生论文写作工具测评:为何需要一份精准指南? 随着人工智能技术的快速发展,AI论文平台逐渐成为高校学生,尤其是专科生群体的重要辅助工具。然而,面对市…

作者头像 李华
网站建设 2026/5/27 1:22:36

Open-AutoGLM部署实战(千卡级优化秘籍)

第一章:Open-AutoGLM部署实战(千卡级优化秘籍)在超大规模模型训练场景中,Open-AutoGLM 的千卡级集群部署对性能调优提出了极高要求。合理的资源配置与通信优化策略是实现线性加速比的关键。分布式训练架构设计 采用混合并行策略&a…

作者头像 李华
网站建设 2026/5/27 1:22:36

【AI自动化工具下载指南】:智普Open-AutoGLM获取路径全解析

第一章:智普Open-AutoGLM如何下载 访问官方仓库 智普AI推出的Open-AutoGLM是一个开源的自动化代码生成工具,其源码托管在GitHub平台。用户需首先访问项目主页以获取最新版本的下载链接。 打开浏览器,访问 https://github.com/zhipuai/Open-…

作者头像 李华
网站建设 2026/5/27 1:22:56

模型部署效率提升300%?Open-AutoGLM轻量化配置秘籍曝光

第一章:模型部署效率提升300%?Open-AutoGLM轻量化之谜在大模型时代,推理延迟与资源消耗成为制约AI落地的关键瓶颈。Open-AutoGLM作为开源社区新兴的轻量化自动推理框架,凭借其独特的模型压缩策略与运行时优化机制,宣称…

作者头像 李华
网站建设 2026/5/18 21:27:21

RAG架构演进全解析:从基础到智能化的四代架构之路

本文系统梳理了RAG架构从基础到智能化的四代演进历程,详细分析了Naive、Advanced、Modular和Agentic RAG的核心特点与技术突破。文章展示了RAG如何通过模块化设计、智能体协同解决知识更新、语义对齐和复杂任务处理等问题,为LLM应用落地提供架构参考&…

作者头像 李华