如何在JMeter测试计划中嵌入测试数据集?

如何在JMeter测试计划中嵌入测试数据集?,jmeter,Jmeter,目前,我的JMeter测试使用CSV数据集配置对我执行的每个HTTP请求迭代有限的输入数据集 但是我不想处理外部文件的麻烦(上传到我的测试运行程序等)——我只想将数据嵌入jmx文件本身 我希望有一个类似于“测试数据”节点的节点,它的工作方式类似于CSV数据集(尤其是EOF上的循环使用),我只是将数据复制/粘贴到测试计划中,而不是使用外部文件 我想我可能可以使用JSR223预处理器来解决这个问题,但是有更好的内置方式吗 编辑:根据注释:无法生成数据。这是我第一次尝试使用JSR223预处理器节点的基

目前,我的JMeter测试使用
CSV数据集配置
对我执行的每个HTTP请求迭代有限的输入数据集

但是我不想处理外部文件的麻烦(上传到我的测试运行程序等)——我只想将数据嵌入jmx文件本身

我希望有一个类似于“测试数据”节点的节点,它的工作方式类似于CSV数据集(尤其是EOF上的
循环使用
),我只是将数据复制/粘贴到测试计划中,而不是使用外部文件

我想我可能可以使用JSR223预处理器来解决这个问题,但是有更好的内置方式吗


编辑:根据注释:无法生成数据。

这是我第一次尝试使用JSR223预处理器节点的基于脚本的方法:

// This is where the data is embedded. Up to a couple of hundred entries 
// is probably fine, more than that will likely be a bad idea.
def messageIdList = ["graffle", "wibble", "wobble", "flobble", "gibble", ...]

def messageIndex = (vars.getIteration() -1) % (messageIdList.size() -1)

println "iteration ${vars.iteration}, size ${messageIdList.size()}, index: ${messageIndex}"

vars.put("messageId", messageIdList[messageIndex]);
messageIndex++
这似乎满足了我的要求,即使是在具有多个线程的
线程组中运行。
我不确定
vars.getIteration()
到底代表什么,也不清楚变量的确切生存期/范围。但现在可以了


任何更好的答案都会被愉快地接受、标记和投票。

如果您想通过语言和语法来实现这一点,正确的语法将是

vars.put(“messageId”、“wibble”)

vars
是类实例的缩写,有关可用的函数和属性,请参阅JavaDoc



更简单的方法是创建一个包含键和值的文本,用tab分隔,复制所有文本

  • 请注意,如果您有属性文件,则可以将
    =
    替换为选项卡
添加到JMeter GUI,然后单击“从剪贴板添加”

它将把所有变量加载到JMeter中,而无需“使用JMeter的GUI手动执行”


.

您的意思是在或中加载变量吗?如果数据的格式为user1、user2….、usern或此类数据,则计数器可以帮助您生成此类数据,但如果其完全随机,则最好将其放置在外部文件中。在大数据集的情况下,嵌入jmx文件的解决方案并不好。在testrunner机器上上传一个小文件不是一个大问题,可以通过使用共享存储轻松解决。如果我按照我的回答实际执行了5项操作,那么您提供的
用户参数
链接看起来是正确的。但我现在已经贴了几百张,看起来效果不错。我不想用JMeter的GUI手工实现。