jmeter接口测试 -- Base64加密(函数助手添加自定义函数)
图片转码 base64
致谢参考博客:
https://www.cnblogs.com/qiaoyeye/p/7218770.html
https://www.cnblogs.com/lasdaybg/p/9803988.html
https://www.cnblogs.com/jyiqing/p/10256178.html
http://www.manongjc.com/article/59838.html
一、环境
jmeter5.2.1
jdk1.8
eclipse
二、具体步骤(总体是参考的第一条博客)
1、打开eclipse建立maven工程

2、修改 pom.xml 文件
修改完 pom.xml 文件后,等一会儿(正在下载 jmeter 的相关东西)
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_functions -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_functions</artifactId>
<version>5.2.1</version>
</dependency>

3、新建 com.mytest.functions 包
4、新建 MyBase64 类(jmeter 函数名为 __Base64Img)
我这里和原作者不同,用的是 java.util.Base64 的包(具体原因看第二第三条博客)
base64 码报错,看第四条博客
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 java.util.Base64; public class MyBase64 extends AbstractFunction{ //自定义function的描述
private static final List<String> desc = new LinkedList<String>();
static {
desc.add("图片路径");
}
static {
desc.add("图片base64后存放变量");
}
private static final String KEY = "__Base64Img"; //存放传入参数的值的变量
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 {
// TODO Auto-generated method stub
JMeterVariables localJMeterVariables = getVariables();
String str1 = ((CompoundVariable)this.values[0]).execute(); String str2 = getImgBase64(str1); if ((localJMeterVariables != null) && (this.values.length > 1)) {
String str3 = ((CompoundVariable)this.values[1]).execute().trim();
localJMeterVariables.put(str3, str2);
} return str2;
} @Override
public String getReferenceKey() {
// TODO Auto-generated method stub
//提供jmeter函数助手显示的名称
return KEY;
} @Override
public synchronized void setParameters(Collection<CompoundVariable> arg0) throws InvalidVariableException {
// TODO Auto-generated method stub
//检查参数的个数,支持的方法有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
* */
//-----------------
/**
*
* protected void checkParameterCount(Collection<CompoundVariable> parameters,
int min,
int max)
throws InvalidVariableException
Utility method to check parameter counts.
Parameters:
parameters - collection of parameters
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 getImgBase64(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.close(); // BASE64Encoder encoder = new BASE64Encoder();
// result = encoder.encode(data);
result = Base64.getEncoder().encodeToString(data); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return result;
} }
5、把 MyBase64 类导出为 jar 包至 apache-jmeter-5.2.1\lib\ext 目录下


6、打开 jmeter5.2.1 去试一试 函数能不能用


7、注意事项
有些接口可能需要 “data:img/jpg;base64,” 这种前缀部分添加上去才能正确读取 Base64 编码
那就在 jmeter 参数填写的时候添加上 “data:img/jpg;base64, ” 这种前缀

好,完成。
jmeter接口测试 -- Base64加密(函数助手添加自定义函数)的更多相关文章
- Jmeter编写Base64加密函数
方法一: 使用Beanshell Sampler.BSF Sampler等实现,现已Base64加密为例,脚本如下: import sun.misc.BASE64Decoder; String res ...
- Jmeter接口测试-MD5加密-请求验签(完整流程)
第一部分:先准备好Jmeter 1.在开始编写脚本之前,先要确保你的Jmeter能够正常运行.若你还没有安装Jmeter,可参考以下方法: A.Jmeter需要java运行环境,所以需要下载JDK,J ...
- Jmeter 接口测试之MD5加密函数(函数助手篇)
转自:https://blog.csdn.net/hhyangel372/article/details/81571058 本文给大家介绍一下如何使用Jmeter自带的函数对常量和变量进行简单的加密处 ...
- jmeter接口测试实例6-注册(参数化)
Jmeter实例6:注册(参数化) 选中http协议,添加CSV Data set Config 准备参数中要使用到的值,存放到txt中,如果一个里面有多个参数,中间用,号分隔: 选中CSV元件,fi ...
- Jmeter函数助手中添加自定义函数
最近,群里的牛肉面大神有个需求,是将每个post请求的body部分做一个加密操作,其实这个需求不算难,用beanshell引入加密函数的包,然后调用就行了.只是,如果请求多了,每次都要调用一下自己加密 ...
- JMeter-Eclipse添加自定义函数 MD5加密 32位和16位
最近公司的接口都是MD5 16位加密,所以要使用加密功能. 之前也做过加密,因为用的比较少,所以是写了一个加密方法,导出JAR包,调用的.用起来需要很多设置,并且换算效率也不高.听前同事说,jmet ...
- jmeter主要函数助手功用说明
jmeter中虽然有很多的插件,但是有些需要安装,有些具有一定的局限性.函数助手是一个快捷的工具库.下面记录一下函数助手中一些主要的函数的使用方法. 注:不内容中所有的实例均基于3.2记录 1._Be ...
- 关于使用jmeter函数助手生成随机数的使用方法
记录自己的生活! 1.使用jmeter函数助手的生成随机数的方法,主要包含以下几个函数: [_Random] [_RandomString] 2.关于[_Random]函数的说 ...
- <转>jmeter(十五)函数助手
jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助. 由于时间和版本问题,其中有些内容和排版我做了修 ...
随机推荐
- 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套!
Python 程序员深度学习的"四大名著": 这四本书着实很不错!我们都知道现在机器学习.深度学习的资料太多了,面对海量资源,往往陷入到"无从下手"的困惑出境. ...
- Python实用笔记 (13)函数式编程——返回函数
函数作为返回值 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n ret ...
- 前端基础:HTTP 协议详解
参考:https://kb.cnblogs.com/page/130970/#httpmeessagestructe HTTP协议是无状态的 http协议是无状态的,同一个客户端的这次请求和上次请求是 ...
- React-Native WebView使用本地js,css渲染html
前言 最近在使用React-Native开发一个App,遇见一个问题,Webview组件根据url来加载页面,但是这样导致的一个问题页面加载的时间有点长,我想优化一下,因为页面只要是一些内容展示,我想 ...
- 洛谷 P4017 【最大食物链计数】
看到这种明显的有向无环图,并且等级分明,自然而然就能想到拓补排序啦.对于这道题,我们就可以利用最短路计数的那种思想(不知道也没关系),设\(j\)是\(i\)的后继,\(dis_i\)表示以\(i\) ...
- Java中的过滤器
什么是过滤器(Filter)? 过滤器就是一个实现了特殊接口的Java类.实现对请求资源的过滤的功能. 过滤器是Servlet技术中最为实用的技术. 过滤器有啥用? 对目标资源进行过滤. 自动登录,解 ...
- Write a program to copy its input to its output, replacing each string of one or more blanks by a single blank.
#include <stdio.h> void main() { int c,c_BCN; while((c=getchar())!=EOF) { if(c!=' ') c_BCN=; i ...
- C#客户端通过安全凭证调用webservice
怎么解决给XML Web services 客户端加上安全凭据,从而实现调用安全的远程web方法?首先,有远程web服务Service继承自System.Web.Services.Protocols. ...
- 02 . 分布式存储之FastDFS 高可用集群部署
单节点部署和原理请看上一篇文章 https://www.cnblogs.com/you-men/p/12863555.html 环境 [Fastdfs-Server] 系统 = CentOS7.3 软 ...
- CF833A The Meaningless Game 题解
题目 Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesting ...