jmeter添加自定义扩展函数之图片base64编码示例详解

yizhihongxing

我们来详细讲解一下“jmeter添加自定义扩展函数之图片base64编码示例详解”的攻略。

准备工作

在开始之前,需要先进行一些准备工作:

  1. 确认已经安装好了jmeter。如果尚未安装,则需要先安装jmeter。
  2. 下载并安装JMeterPlugins-Extras插件包。可以从JMeterPlugins官网下载并安装该插件包。

步骤一:创建自定义函数

在jmeter中创建自定义函数的方法很简单。现在,我们来创建一个名为“imageToBase64”的自定义函数。

  1. 使用任何文本编辑器打开JMeterPlugins-Extras插件包的“lib”文件夹下的“ext”文件夹。在里面创建一个名为“imageToBase64”的新文件,后缀为“.groovy”。
  2. 打开文件并添加以下代码:
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中

  1. 将上一步创建的自定义函数文件添加到“lib”文件夹下。
  2. 重新启动jmeter。
  3. 双击“Test Plan”组,添加一个新的Sampler。
  4. 在“Sampler”下的“Arguments”中添加一个新的字符串参数,命名为“filename”。
  5. 在“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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java 数据库连接池Druid 的介绍

    下面就为您详细讲解Java数据库连接池Druid的介绍。 一、概述 Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP等DB池的优点,同时加入了日志监控功能,利用Druid能够大大提高数据库访问的性能,是目前使用比较广泛的数据库连接池之一。 二、特点 Druid具有以下几个特点: 性能优秀。Druid经过多种优化,比如使用简单的S…

    Java 2023年6月3日
    00
  • Java基础知识之StringWriter流的使用

    下面是“Java基础知识之StringWriter流的使用”的完整攻略。 1. StringWriter流简介 在Java中,StringWriter流是一个带有自动缓冲区的字符流。通过使用StringWriter流,我们可以在内存中实现写字符串操作。StringWriter流无需指定目标文件或控制台输出等设备,可以将数据流写入到内存中的缓冲区,直到输出完毕…

    Java 2023年5月26日
    00
  • Maven入门教程之如何在idea中配置Maven

    首先,我们需要确保已经安装了Maven和IntelliJ IDEA。 接下来,按照以下步骤配置Maven: 步骤一:在IntelliJ IDEA中创建一个新的Maven项目 打开IntelliJ IDEA,点击“Create New Project”。 在左侧面板中选择“Maven”。 在右侧面板中选择“Create from archetype”。 在下拉…

    Java 2023年5月20日
    00
  • 页面的缓存与不缓存设置及html页面中meta的作用

    页面缓存是浏览器缓存方式之一,也是提高网站性能的重要手段之一。Web页面中通过使用HTTP头,让浏览器在本地缓存页面,以避免重复网络请求。本文将对页面缓存和不缓存设置进行详细讲解,并介绍HTML页面中meta标签的作用。 页面缓存的作用 页面缓存是将网站的静态资源如CSS、JS、图片等文件保存在本地,下次打开同样的页面,在一段时间内可以直接从缓存中读取,从而…

    Java 2023年6月16日
    00
  • SpringBoot实现多个子域共享cookie的示例

    下面将详细讲解SpringBoot实现多个子域共享cookie的完整攻略。首先我们需要了解什么是cookie和域名。 什么是cookie和域名? HTTP Cookie,一般简称 Cookie,指某些网站为了辨别用户身份、进行 session 跟踪而存储在用户本地终端上的数据(通常经过加密)。 而域名,是互联网上用于区分不同网站的名称。例如在www.exam…

    Java 2023年5月19日
    00
  • Tomcat9使用免费的Https证书加密网站的方法

    Tomcat9使用免费的Https证书加密网站的方法 Tomcat9是一款流行的Web应用服务器软件,在进行网站开发时,保障用户数据传输安全是必不可少的,并且在互联网时代中,采用Https协议来保障用户数据传输安全也成为了一种标配。免费的Https证书有Let’s Encrypt和SSL For Free,本文将详细介绍Tomcat9如何使用免费的Https…

    Java 2023年6月2日
    00
  • Spring Data JPA的Audit功能审计数据库的变更

    下面我来详细讲解Spring Data JPA的Audit功能审计数据库的变更的完整攻略。 什么是Spring Data JPA的Audit功能 Spring Data JPA的Audit功能是指将数据的变更操作记录下来,包括数据的新增、删除、修改等操作。通过Audit功能,我们可以了解数据的变更历史,并且可以追溯数据的操作者、操作时间等信息。 如何使用Sp…

    Java 2023年5月20日
    00
  • 在SpringBoot项目中整合拦截器的详细步骤

    在SpringBoot项目中整合拦截器的步骤如下: 1.编写拦截器类和配置类 首先,我们需要编写一个自定义的拦截器类,实现HandlerInterceptor接口并重写其三个方法。接着,需要编写一个配置类,将拦截器注册到Spring容器中,并指定对哪些URL进行拦截。 示例: public class MyInterceptor implements Han…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部