我一直在尝试在 JMeter 测试中创建一个步骤来模拟整个测试期间不断增加的字符串。 我已经看到了 randomString 函数,它看起来很完美,但我找不到改变第一个参数的方法。
我的测试中有一个计数器,它从 0 开始,然后在每次迭代时增加 1,所以我的第一个想法是使用类似的东西:
${__RandomString(${counter},abcdefjhijklmnopqrtsuvwxyz1234567890,nameOfOutput)}
但是这在运行时一直失败,告诉我 Counter 是一个字符串。
我还尝试运行更通用的 RandomString :
${__RandomString(${__Random(100,4500,)},abcdefjhijklmnopqrtsuvwxyz1234567890,nameOfOutput)}
工作正常,但我的 JMeter 在执行该步骤时返回 500 错误代码(即使它会提供随机字符串),原因如下:
2024-10-22 16:52:03,247 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script Create Random String, message: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: jv03nn8zfzntdzates8i4w9s160owr2xx4rtor4x3tnec4h8xpidmv4760o84n49x39kuyzy55ybjoe8f6p58b7o9btjp0ocntnr2wshj069qhli3awf96f31b7pjae8jpck1q4o9xqthey5dko38djydh0hdun4y7n4ccblvetzuoo41jw7ssn3jx3sjjk63s2w12b634luln6p8bdu65sjqz48t92j6vytpqjcfblo3avbj0ef9c7ozzva08mia5syjae0tc50oi5p3f1jys for class: Script15
javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: jv03nn8zfzntdzates8i4w9s160owr2xx4rtor4x3tnec4h8xpidmv4760o84n49x39kuyzy55ybjoe8f6p58b7o9btjp0ocntnr2wshj069qhli3awf96f31b7pjae8jpck1q4o9xqthey5dko38djydh0hdun4y7n4ccblvetzuoo41jw7ssn3jx3sjjk63s2w12b634luln6p8bdu65sjqz48t92j6vytpqjcfblo3avbj0ef9c7ozzva08mia5syjae0tc50oi5p3f1jys for class: Script15
我做错了什么?
选项位于:
用引号将函数引起来。然而,根据JSR223 Sampler文档,它将导致缓存编译值,并且生成的字符串仅在第一次迭代期间是“随机”的
通过“参数”部分传递它,例如
使用 RandomStringUtils 类代替:
String randomString = org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric(100, 4500)
有关 JMeter 中 Groovy 脚本编写的更多信息:Apache Groovy:Groovy 的用途是什么?