Jmeter在一次线程里多次调用同一个拼接参数,不使用自带拼接函数

记录一下使用Jmeter在一次线程里需要多次调用同一个参数时的拼接方法

在对创建、编辑等接口使用Jmeter进行性能、稳定性测试时,需要造多个名称相同,编号不同的参数。

例如:productName参数,对应字段分别为testCreate001、testCreate002、testCreate003……

原先是使用用户参数+计数器组件,加上Jmeter自带的__V{}函数,像这样:

这种方法在我没有将productName的字段testCreate参数化的时候很好用 ,无论怎么调用,在运行一次线程productName对应的字段总是testCreate001、testCreate002这样。但后来为了测试更方便一些,我把productName做了参数化,放在了CSV文件里。此时我把用户参数里productName对应的字段修改成了${__V(${productName}${n})},使用时发现了一个问题:

如果一个线程里使用了多次productName参数,每次调用的名称都不一样,第一次的时候是testCreate001001,第二次就变成了testCreate001001001001,因为调用的次数多,甚至看到了testCreate001001001001001001001001001001001001001001

思考了一下,应该是每次使用参数的时候,__V函数都在起作用。我需要让这个参数在多次调用和循环的线程中显示正常,尝试用仅一次控制器,结果这个组件似乎对用户参数不起作用,输出的参数直接变成了testCreate,都没有拼接。

最后的解决办法:

既然__V函数这么不智能,只能自己来了。直接使用Beanshell代码进行拼接。在线程的最前面放一个Beanshell Sampler,然后写拼接代码:

String productName = vars.get("productName");
String n = vars.get("n");

String productName = productName + n;
vars.put("productName",productName);

最后输出的参数都一致了,而且会跟着计数器的循环自增。

原文地址:https://www.cnblogs.com/teapotpot/p/12175276.html

时间: 2024-10-24 22:38:03

Jmeter在一次线程里多次调用同一个拼接参数,不使用自带拼接函数的相关文章

求助~!线程里不能MediaRecorder.start()

============问题描述============ 我开一条线程 new MediaRecorder 并MediaRecorder.start(),编译通过:但是MediaRecorder.start()报错结果是XXX已停止运行 自动退出了? 注释掉MediaRecorder.start():MediaRecorder.stop() 后就正常了. 线程里不能调start()吗? 谢谢各位走过   路过 的帮解释一下! ============解决方案1============ 在UI线程

[存]Jmeter 如何实现跨线程组传递参数

此文来源与组里小白的分享~ Jmeter 如何实现跨线程组传递参数(以传递token为例)   1.首先选择一个登陆接口(线程组1),添加正则表达式提取器提取token,接着再添加一个后置处理器BeanShell PostProcessor 2.BeanShell PostProcessor中参数项输入引用变量${token};脚本项输入动作语句${__setProperty(token1,${token},)}; 3.在线程组2添加一个前置处理器BeanShell PreProcessor 4

Winform软件,不要在线程里操作UI

对于Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls = false; 于是,把所有的代码都改成主线程委托调用的方式 private delegate void SetTextHandle(string id, string value); private void ThreadSetText(string id, string value) { this.Controls.Find(id, true)[0].

Qt 的线程与事件循环——可打印threadid进行观察槽函数到底是在哪个线程里执行,学习moveToThread的使用)

周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解.从来只看到现象,这次借 dbzhang800 的博客,就代码论事,因此了解到一些 Qt 深层的实现,虽然是在 Qt 庞大的构架里只算的是冰山的一角,确让人颇为收益. 从 dbzhang800 的博客中转载两篇关于事件循环的文章,放在一起,写作备忘. 再次提到的一点是:事件循环和线程没有必然关系. QThread 的 run() 方法始终是在一个单独

C#,往线程里传参数的方法总结

C#,往线程里传参数的方法总结 Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始化 Thread 类的新实例.  由 .NET Compact Framework 支持.  Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈

JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this

JAVA之旅(十三)--线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this 我们继续上个篇幅接着讲线程的知识点 一.线程的安全性 当我们开启四个窗口(线程)把票陆陆续续的卖完了之后,我们要反思一下,这里面有没有安全隐患呢?在实际情况中,这种事情我们是必须要去考虑安全问题的,那我们模拟一下错误 package com.lgl.hellojava; import javax.security.auth.callback.TextInputCallback

在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。 多线程操作剪切板的时候。

最近做一个蛋疼的东西就是C#调用windows API 来操作一个 软件,自动处理一些东西.要用到剪切板复制 粘贴功能,即 Clipboard.SetDataObject(filedic, true)等. 本来测试的时候,通过主线程 按钮点击开始的时候没有任何问题.但是把整个过程放在一个单独一个线程的时候一到复制的时候就报错, “在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记”.但是查看我的主线程main

线程池的简单调用(附动态图)

[前言] 在实际工作中,很少会执行new Thread做多线程处理,而是会创建好线程池,再调用线程池资源. 就像连接数据库,从来不会说,用JDBC建立连接,而是用数据库连接池,Netty通信也是建个Channel通道池. 单独建个JDBC要加载驱动,写URL 数据库配置信息,还得关闭连接,每次都得来一遍很麻烦.new Thread也是一样,每次new Thread都要新建个对象,而且线程也缺乏统一的管理,总不可能每次都给线程命名,如果不小心在循环中new了,还可能出现,不停建新线程直至死机,一些

选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 方法1: class Program { /// <summary> /// 图片资料文件同步 /// </summary> /// <param name="args"></param> [STAThread] //加这个属性,创建并进入单