JMeter通过OS Process Sampler调用Python脚本实现参数传递
本文详解如何在JMeter中使用OS Process Sampler组件调用Python脚本,通过sys.argv接收外部参数并返回结果。结合.bat批处理文件与正则表达式提取器,实现JMeter与Python间的参数双向传递及数据提取,适用于接口自动化测试中的动态数据处理场景。
Python sys.argv参数接收原理
在Python中,sys.argv用于从程序外部获取命令行参数。sys.argv是一个列表对象,通过索引[]可以提取其中的元素。该列表的第一个元素始终是脚本本身的名称,随后的元素依次为外部传入的参数。只要参数之间用空格分隔,即可接收多个参数。
'''该脚本用于jmeter的OS进程提取器的调用'''
import hashlib
import sys
import time
parameter = sys.argv
# print(parameter, type(parameter))
def password_srt(pubkey, password):
time_str = str(time.time())
sign_str = pubkey + time_str + password
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()
res = {'sign': sign, 'pubkey': pubkey, 'password': password}
# print()的内容可被jmeter接收,可以在jmeter中对其相关参数进行提取。
print(res)
return res
if __name__ == '__main__':
password_srt(parameter[1], parameter[2])例如,在命令行(cmd)中调用上述Python脚本时,可以在命令后追加两个参数进行传递。

需要注意的是,Python脚本中print()函数输出的内容均可被JMeter接收。在JMeter中,可以使用正则表达式提取器来提取这些输出中的特定参数值。
构建批处理文件
新建一个.bat批处理文件,其具体命令内容如下:python E:\python_project\Python-Auto\python_jmeter\jmeter_os_process.py %1 %2。其中,%1和%2表示将两个参数传递给Python文件(若使用%1 %1则表示传递两个相同的参数)。

JMeter配置OS Process Sampler
在JMeter中,通过OS Process Sampler组件读取并执行上述批处理文件,这实际上就是执行预先编写的Python脚本。
(1)在JMeter中添加【OS Process Sampler】组件的路径如下:

(2)①在【Command】(命令)输入框中,填写.bat文件的完整路径,例如:E:\python_project\Python-Auto\python_jmeter\jmeter_os_process.bat。
②在【Command Line Arguments】(命令行参数)中添加【Value】(值)。传入值的数量需与.bat文件中定义的参数数量一致,例如传入两个值时对应%1和%2。
③在【Command Line Arguments】中添加【Value】时,支持使用变量,例如引用JMeter中参数化定义的变量。

参数提取与应用
使用【正则表达式提取器】对Python脚本打印输出的参数进行提取,以便在JMeter后续步骤中使用。(注意:一个正则表达式提取器仅能提取一个参数,若需提取多个参数,需配置多个提取器。)

例如,在接口请求中使用上述提取到的参数进行调用。

至此,关于JMeter通过OS Process Sampler调用Python脚本实现参数互传的介绍已完成。如需了解更多关于Python脚本实现参数互传的内容,请搜索本站历史文章或继续浏览相关文章,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













