jmeter中执行python

jmeter中执行python脚本

  • 需要的资料
    • 使用的步骤
    • 出现问题的解决方案

需要的资料

JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。

jython-standalone-2.7.2.jar,一个将Python代码转换成Java代码的编译器,能够将自己用Python代码写的类库用在Java程序里,有需要的可以下载.java 调用 python(使用jpython)
下载地址:https://search.maven.org/artifact/org.python/jython-standalone/2.7.2/jar
jmeter中执行python_第1张图片

使用的步骤

1.下载的jar包,放到jmeter安装目录的lib中,然后重启jmeter,添加JSR223 Sampler,设置如下。
jmeter中执行python_第2张图片
或者jmeter中执行python_第3张图片
2.把代码复制到下面的输入框中即可。

出现问题的解决方案

注意:
问1.jython-standalone的其他版本是否可用?
答:目前验证2.7.0版本可用,其他版本不一定可用,如果其他版本不可用,有问题可以换成2.7.0版本,

问2.python3以上是否可用?
答:JSR223 Sampler Python脚本不支持python3和不设置解析器会搜索的前目录

问3.python需要导入第三方库,复制到jmeter中后,提醒ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: ImportError: No module named xlrd in script at line number 8 javax.script.ScriptException: ImportError: No module named xlrd in script at line number 8?
答:安装好第三方库,并同时在jmeter中指定第三方库的具体位置。
1)本地环境安装python2.7——后缀msi直接执行
2)下载pip-9.0.1.tar.gz安装包,解压后,打开cmd,切换到pip安装目录下,然后执行 D:\python\python.exe setup.py install(路径对应个人的路径)
在这里插入图片描述
安装成功jmeter中执行python_第4张图片
3)安装第三方库,直接执行pip install xlrd有问题,因为python路径和pip路径没有在path里面,需要使用pip的绝对路径执行:D:\python\Scripts\pip.exe install xlrd,
在安装的中可以看到pip的目录,安装第三方库成功后,第三方库的目录在python安装目录下的\Lib\site-packages中
jmeter中执行python_第5张图片
4)在jmeter的JSR223 Sampler中写上内容或者配置环境变量:

import sys
sys.path.append('D:\Program Files\Python\Python27\Lib')
sys.path.append('D:\Program Files\Python\Python27\Lib\site-packages')

别人整理但未尝试的方法:

  • 使用pth文件,在 site-packages 文件中创建 .pth文件,将模块的路径写进去,一行一个路径。不能在不同的python版本中共享。路径在 /python2.7/site-packages中,如果没有此文件,需要新建一个。
  • 使用PYTHONPATH环境变量,在这个环境变量中输入相关的路径,如果PYTHONPATH 变量还不存在,可以创建它!这里的路径会自动加入到sys.path中,永久存在于sys.path中而且可以在不同的python版本中共享,应该是一样较为方便的方法。
  • 将自己做的py文件放到 site_packages 目录下。 【不推荐】
  • 直接把模块文件拷贝到$python_dir/Lib目录下。 【不推荐】

备注:处理完上面情况后,大部分第三方库都能正常,但部分库还是提示:No module in script at line number 8,原因是部分旧版本还不支持新库,可以换到最新的jython-standalone.jar包

问4.jmeter执行python代码提示“UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe6 in position 0: ordinal not in range(128) in

import sys 
reload(sys)
sys.setdefaultencoding('utf-8')
 另一个方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:
#encoding=utf8 
import sys 
reload(sys)
sys.setdefaultencoding('utf-8')

重启python解释器,执行sys.getdefaultencoding(),查看编码已经被设置成功为utf-8。

你可能感兴趣的:(工具使用,python,jmeter)