【JMeter】jmeter测试 - 上传多个图片/批量上传图片接口 CSV文件参数化方法

2023-05-16

在这里插入图片描述

目录

  • 前言
  • 数据情况与路径生成
  • 测试 - 上传多个图片/批量上传图片
  • 运行
  • 图片名含中文时出现乱码的问题
  • 参考

前言

在网上查了一下,没有查到很满意的方法,这里记录了一个比较好用的方法。

需要测试的接口,是直接将图片File放到请求体中。

在这里插入图片描述

接口的函数签名如下:

@Slf4j
@Controller
@RequestMapping(Constants.IMG_SYSTEM_URL_PREFIX + Constants.IMAGE_SERVICE_URL)
public class FileController {

    @ResponseBody
    @PostMapping(value = "/upload-images")
    public Response uploadImages(HttpServletRequest httpServletRequest, 
    							@RequestParam("authorizedUsers") List<String> authorizedUsers) throws IOException {
		xxx
		(省略)
		xxx
		
        return response;
    }
    
}

数据情况与路径生成

如果你跟我一样,图片放在一个文件夹里,可以写个小脚本自动生成所有图片的绝对路径。

有图片文件夹images如下(图片名不能是中文,出现中文jmeter会报错,详情见后面):

在这里插入图片描述

先在图片文件夹里创建一个 txt 新建文本:

在这里插入图片描述

在文本中输入如下指令:

DIR *.* /S/ON/B>LIST.TXT DIR

如下:
在这里插入图片描述

然后退出,修改这个文档的后缀 txtbat,命名为提取所有图片名字到txt.bat如下:

在这里插入图片描述

然后双击运行这个 bat文件,可以得到所有文件的绝对路径,存于LIST.TXT:

在这里插入图片描述

我们将LIST.TXT改名为images.csv,打开里面如下:

在这里插入图片描述

我们删除一下里面的非图片地址,就准备好了要上传图片的绝对路径,均放在csv表格中。

测试 - 上传多个图片/批量上传图片

创建CSV文件设置:

在这里插入图片描述

配置如下,怕报错可以完全按照我的配置。地址为刚刚的 images.csv 文件的地址,这里变量名就是imageName,待会跟http请求的变量保持一致,我们在csv中没有表格首行,所以不需要忽略首行。

在这里插入图片描述

线程组设置:

在这里插入图片描述
在jmeter的测试环境下,线程组的循环次数代表我们在image.csv遍历的图片数量。

如果我们的图片 image.csv 中有100张图片路径,当线程数选择1,那么当循环次数为1时,线程会取 image.csv 中的第一行图片路径进行读取,传给我们的服务端代码。如果循环次数为100,线程才会取 image.csv 中所有的100行图片路径进行读取。所以我建议循环次数和 image.csv 图片路径的数量保持一致

在这个基础下,线程数按照测试需求进行选取即可。

然后先创建必要的http请求

在这里插入图片描述

如下:

在这里插入图片描述

这里【重定向】和【keepalive】和【对POST使用multipart/form-data】勾上。

参数名称选择接口的参数名,我这里是 image,我们使用csv表格来存图片地址,这里MIME类型选择 image/form-data,文件名称选择 ${imageName}

运行

启动
在这里插入图片描述

成功了

在这里插入图片描述

图片名含中文时出现乱码的问题

如果图片名包含中文,那么除非像 https://blog.csdn.net/weixin_44383795/article/details/122866207 一样修改jmeter源码,否则无法解决报错问题。我这里建议是修改图片名为英文名。

第一,如果csv配置文件编码用UTF-8,或者jmeter.properties修改编码配置,或者用BeanShell预处理或者后置处理,都没有用的,而且从jmeter编码时就会报错。

在这里插入图片描述

在这里插入图片描述

第二,csv配置文件编码可以选择GBK,或者GB2312随便你,这样的确可以让jmeter成功读取到csv文件的图片名,但是编码成功之后,还需要解码给服务端代码,由于jmeter源码中csv解码是写死的,默认用的ISO而不是UTF-8,因此在服务端侧收到的文件名就会变成乱码。

第三,我下载了较新的jmeter5.5版本,依然不解决问题。

所以如果赶时间的话建议还是改图片名字吧,不赶时间可以改源码

参考

https://blog.csdn.net/weixin_44383795/article/details/122866207

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JMeter】jmeter测试 - 上传多个图片/批量上传图片接口 CSV文件参数化方法 的相关文章

  • 用 Python 重复读取 CSV?

    我正在尝试根据我已有的 csv 检查提取的数据的值 它只会循环遍历 CSV 的行一次 我只能检查 feed items 的一个值 我需要在某处重置某个值吗 有没有更好 更有效的方法来做到这一点 谢谢 orig csv reader open
  • 使用 CSV 文件填充下拉列表 - d3

    我想在 html 中填充简单的下拉列表 使用 csv 文件中存在的值 我尝试类似的方法 但它不起作用
  • 如何通过电子邮件发送保存的 CSV 文件或在 Android 中使用 Google Drive 上传?

    我有一个简单的日志记录应用程序 它将数据收集到三个数组列表中 我想将其保存到 CSV 文件中 然后共享到 Google Drive 电子邮件等 这是我保存数据的方法 StringBuilder data new StringBuilder
  • 如何以 Express 方式传输响应?

    我一直在尝试让一个快速应用程序以流形式发送响应 var Readable require stream Readable var rs Readable app get report function req res res statusC
  • CSV 损坏,如何修复?

    我正在尝试解析 CSV 我想将它放入数据库或只是用 JavaScript 解析它 但由于语法损坏 任何一种方法都会失败 我的整个 CSV 文件在这里 https gist github com 1023560 https gist gith
  • 在 SQL 中将 CSV 字段拆分为不同的行

    我的一位同事在做COBOL程序时遇到了这个问题 最终在应用程序层面解决了它 我仍然很好奇是否可以使用 SQL 在数据访问级别上解决它 这在某种程度上与这另一个问题 https stackoverflow com questions 2903
  • 使用 boto3 将 csv 文件保存到 s3

    我正在尝试写入 CSV 文件并将其保存到 s3 中的特定文件夹 存在 这是我的代码 from io import BytesIO import pandas as pd import boto3 s3 boto3 resource s3 d
  • 在闪亮的应用程序中选择文件夹或文件夹目录

    我在使用闪亮时遇到问题 我想选择保存我要在应用程序中使用的所有文件的文件夹 方法是 1 将工作目录设置为该文件夹路径 或 2 将此文件夹内的所有 csv 数据上传到我的应用程序以进行进一步处理 1 我找到了shinyFiles包 但它非常非
  • 将 word2vec 模型查询的结果保存在 csv 文件中?

    我正在语料库上训练 word2vec 模型 然后查询该模型 这工作正常 但我正在运行一个实验 需要针对不同的条件调用模型 保存每个条件的模型 查询每个条件的模型 然后将查询的输出保存到 csv 文件中 例如进一步分析所有条件 我研究了 ge
  • 在 JMETER 中循环遍历 JSON 响应 +

    我正在使用 Jmeter 进行性能测试并卡在以下点 我从 Webapi 收到 JSON 响应 如下所示 PersonInfoList Person 0 id 1 name Steve 1 Person id 2 name Mark 我需要根
  • 在 python 中读取具有恶意字节 0xc0 的文件,导致 utf-8 和 ascii 出错

    尝试将制表符分隔的文件读入 pandas 数据帧 gt gt gt df pd read table fn na filter False error bad lines False 它会出错 如下所示 b Skipping line 58
  • 从 django 返回带有 BOM 的 UTF-8 编码的 csv

    我正在尝试输出一个用户可以用 Excel 打开的 CSV 文件 我已经用 UTF 8 编码了所有字符串 但是当我用 Excel 打开文件时 我看到了乱码 只有在将文件转换为带 BOM 的 UTF 8 在 Windows 上使用 notepa
  • 如何在byte[]中制作csv?

    我想知道我应该如何创建一个在 byte 中创建 csv 文件的方法 目前我正在使用这样的东西 public byte makeCsv StringBuffer csv new StringBuffer csv append columnhe
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • csv格式是常规语法还是上下文无关语法?

    我目前正在编写一个 csv 解析器 csv 格式的定义由下式给出RFC4180 https www rfc editor org rfc rfc4180这是由 ABNF 定义的 所以csv的定义绝对是上下文无关语法 不过我想知道csv是否是
  • 可以写入 csv 文件但不能追加

    string pathDesktop Environment GetFolderPath Environment SpecialFolder Desktop string filePath pathDesktop mycsvfile csv
  • 您可以用 Google 的 Protocol Buffer 格式表示 CSV 数据吗?

    我最近发现了协议缓冲区 想知道它们是否可以应用于我的特定问题 基本上 我有一些 CSV 数据 需要将其转换为更紧凑的格式以进行存储 因为其中一些文件有几GB CSV中的每个字段都有一个标题 并且只有两种类型 字符串和小数 因为有时有很多有效
  • 如何在Python中选择要写入(.csv)的列

    import csv f csv reader open lmt csv r open input file for reading Date Open Hihh mLow Close Volume zip f s plit it into
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • Import-Csv - 成员已存在问题

    我必须将多个 CSV 文件合并为一个文件 每个 CSV 都有一个标题 其中一列标题是相同的 理想情况下 最终文件 all out csv 必须有一个标头 我运行 PowerShell 代码 Import Csv out 1 result c

随机推荐