打开eclip,新建maven工程,在pom中引入jmeter核心jar包:
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/apachejmeter_core --><dependency> <groupid>org.apache.jmeter</groupid> <artifactid>apachejmeter_core</artifactid> <version>3.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.jmeter/apachejmeter_functions --><dependency> <groupid>org.apache.jmeter</groupid> <artifactid>apachejmeter_functions</artifactid> <version>3.2</version></dependency>
1. 新建一个包com.mytest.functions,包名要包含functions,因为jmeter.properties对这块有配置,可见该文件的classfinder.functions.contain=.functions.
2. 在该包下新建一个类并继承abstractfunction,重写该文化多样性类的所有方法,具体如下:
package com.mytest.functions;import java.io.fileinputstream;import java.io.inputstream;import java.util.collection;import java.util.linkedlist;import java.util.list;import org.apache.jmeter.engine.util.compoundvariable;import org.apache.jmeter.functions.abstractfunction;import org.apache.jmeter.functions.invalidvariableexception;import org.apache.jmeter.samplers.sampleresult;import org.apache.jmeter.samplers.sampler;import org.apache.jmeter.threads.jmetervariables;import sun.misc.ba64encoder;public class myba64 extends abstractfunction{ //自定义function的描述 private static final list<string> desc = new linkedlist<string>(); static { desc.add("图片路径"); } desc.add("图片ba64后存放变量"); private static final string key = "__myba64"; //存放传入参数的值的变量 private object[] values; //描述参数 public list<string> getargumentdesc() { // todo auto-generated method stub return desc; @override //函数的面料采购执行 public synchronized string execute(sampleresult arg0, sampler arg1) throws invalidvariableexception { jmetervariables localjmetervariables = getvariables(); string str1 = ((compoundvariable)this.values[0]).execute(); string str2 = getimgba64(str1); if ((localjmetervariables != null) && (this.values.length > 1)) { string str3 = ((compoundvariable)this.values[1]).execute().trim(); localjmetervariables.put(str3, str2); } return str2; public string getreferencekey() { //提供jmeter函数助手显示的名称 return key; public synchronized void tparameters(collection<compoundvariable> arg0) throws invalidvariableexception { //检查参数的个数,支持的方法有2个,具体用法参加api: 小学教师节黑板报 /** * protected void checkparametercount(collection<compoundvariable> parameters, int count) throws invalidvariableexception公司食堂管理制度 utility method to check parameter counts. parameters: parameters - collection of parameters count - number of parameters expected * */word打开是乱码 //----------------- * int min, int max) min - minimum number of parameters allowed max - maximum number of parameters allowed //checkparametercount(arg0, 1); checkparametercount(arg0, 1, 2); //将参数值存入变量中 this.values = arg0.toarray(); public string getimgba64(string filepath) { inputstream in = null; byte[] data = null; string result = null; try { in = new fileinputstream(filepath); data = new byte[in.available()]; in.read(data); in.clo(); ba64encoder encoder = new ba64encoder(); result = encoder.encode(data); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); return result;}
3. 由于我写的类没有依赖第三方jar包,引入的jmeter核心包都是jmeter自带的,所以直接导出上面的类为一个jar包,并把这个jar放在jmeter安装目录的apache-jmeter-3.2\lib\ext下面
4. 重启jmeter,打开函数助手,可看见如下图:
5. 下面我们测试一下这个函数是否能使用,新建一个http请求,在post请求里分别添加${__myba64(d:\\aa.jpg,imgresult)}和${imgresult}如下图,注意${__myba64(d:\\aa.jpg,imgresult)}一定要在上面
6. 运行后可以看到已经成功
到此这篇关于jmeter添加自定义扩展函数之图片ba64编码示例详解的文章就介绍到这了,更多相关jmeter图片ba64编码内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 20:00:38,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/6b1869190c4c34b64ba7a985d865e9b4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:jmeter添加自定义扩展函数之图片base64编码示例详解.doc
本文 PDF 下载地址:jmeter添加自定义扩展函数之图片base64编码示例详解.pdf
留言与评论(共有 0 条评论) |