我们来详细讲解一下“jmeter添加自定义扩展函数之图片base64编码示例详解”的攻略。
准备工作
在开始之前,需要先进行一些准备工作:
- 确认已经安装好了jmeter。如果尚未安装,则需要先安装jmeter。
- 下载并安装JMeterPlugins-Extras插件包。可以从JMeterPlugins官网下载并安装该插件包。
步骤一:创建自定义函数
在jmeter中创建自定义函数的方法很简单。现在,我们来创建一个名为“imageToBase64”的自定义函数。
- 使用任何文本编辑器打开JMeterPlugins-Extras插件包的“lib”文件夹下的“ext”文件夹。在里面创建一个名为“imageToBase64”的新文件,后缀为“.groovy”。
- 打开文件并添加以下代码:
package org.apache.jmeter.functions
import org.apache.commons.codec.binary.Base64
import java.io.FileInputStream
//========================================
// 自定义函数:将图片转换成Base64编码
// 参数:
// - 图片的完整路径
// 返回值:
// - 图片内容的Base64编码字符串
//========================================
class imageToBase64 extends AbstractFunction {
private static final List<String> desc = Arrays.asList("imageToBase64")
private static final String KEY = "__imageToBase64"
private static final int MAX_PARAM_COUNT = 1
private static final int MIN_PARAM_COUNT = 1
private static final String ERROR_MESSAGE = "Error: One parameter, the filename of the image to base64 encode expected."
static {
}
def execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
def imageName = parameters[0].trim()
def imageBytes = new byte[new File(imageName).length()]
new FileInputStream(imageName).read(imageBytes)
Base64.encodeBase64String(imageBytes)
}
def getReferenceKey() {
KEY
}
def getArgumentDesc(arg) {
null
}
def getArgumentCount() {
MAX_PARAM_COUNT
}
def execute(result, current) {
try {
execute(null, null)
} catch (Exception e) {
result.setFailure(true)
result.setError(true)
result.setResponseMessage(e.toString())
}
}
def getDescriptor() {
return new FunctionDescriptorImpl(
KEY,
"Image to Base64",
this,
desc
)
}
}
上面的代码将图片转换成Base64编码,可以接收一个图片的完整路径作为参数。
步骤二:将自定义函数添加到jmeter中
- 将上一步创建的自定义函数文件添加到“lib”文件夹下。
- 重新启动jmeter。
- 双击“Test Plan”组,添加一个新的Sampler。
- 在“Sampler”下的“Arguments”中添加一个新的字符串参数,命名为“filename”。
- 在“Sampler”下的“Request”中,输入以下代码:
${__imageToBase64(${filename})}
${__imageToBase64(${filename},imageToBase64)}
示例
使用自定义函数可以方便地进行图片转换。以下是两个示例:
示例1:将一张图片转换成Base64字符串
假设我们有一张图片叫做“test.png”,并且它的完整路径为“/Users/username/file/test.png”。在jmeter中,我们可以这样写:
${__imageToBase64(/Users/username/file/test.png)}
结果将会是一个Base64编码的字符串。
示例2:使用命名参数将图片转换成Base64字符串
假设我们有一张图片叫做“test.png”,并且它的完整路径为“/Users/username/file/test.png”。在jmeter中,我们可以这样写:
${__imageToBase64(filename=/Users/username/file/test.png,imageToBase64)}
使用了命名参数“filename”,可以在函数中获取到。结果将会是一个Base64编码的字符串。
结论
在本文中,我们学习了如何添加自定义函数到jmeter中。同时,我们也学习了如何将一张图片转换成Base64编码,应用于jmeter中。希望这篇文章能够对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jmeter添加自定义扩展函数之图片base64编码示例详解 - Python技术站