我正在尝试构建一个可以对服务器进行http调用的Jmeter测试计划。线程组中的每个线程将从CSV文件中读取2个参数并使用参数进行http调用,并继续使用相同的参数进行相同的调用,例如1000次,每次线程执行之间的延迟为10秒。
http呼叫看起来像
/service/method?param1=${param1}¶m2=${param2}
CSV是这样的:
1,2 3,4 5,6 7,8
我设置的测试计划除大部分问题外大部分都有效。我希望每个线程在线程执行时都使用相同的参数(相同的输入行)。目前唯一的方法是设置Recycle on EOF = true
,但线程会随机选择值。 Param1和Param2可以是随机生成的值,只要它们在整个执行过程中都坚持使用相同的线程。
无论如何我能做到这一点吗?
谢谢!
答案 0 :(得分:2)
我不确定我是否理解您的问题(您可以更明确地或使用示例来描述它),但下面的架构应该实现您的测试计划说明:
Test Plan Thread Group Number of Threads: N . . . While Controller Condition: ${__javaScript("${param2"!="<EOF>",)} - read csv-file until the EOF CSV Data Set Config Filename: [path to your file with test-data] Variable Names: param1,param2 Recycle on EOF? False Stop thread on EOF? True Sharing mode: Current thread group Loop Controller Loop Count = 1000 - number of loops for each thread, with the same params HTTP Request - your http call Test Action Target = Current Thread Action = Pause Duration (ms) = 10000 - pause between calls . . .
如果您需要N个线程中的每个线程读取并使用来自csv文件的单个且唯一行,则必须为CSV数据集配置设置Sharing mode: Current thread group
(csv-的数量)在这种情况下,条目应该是作为线程编号的理智,否则应该设置Recycle on EOF? False
如果您需要N个线程中的每个线程都读取并使用csv文件中的所有行,则必须为CSV数据集配置设置Sharing mode: Current thread
。
如果那不是您想要的,请更清楚地描述您的问题。
答案 1 :(得分:0)
我能够找到一种黑客攻击。基本上我只为每个线程放置一个常量计时器,并使用线程号$ {__ threadNum}作为参数,以适应我的约束,即同一个线程使用相同的参数。
我仍然更喜欢从csv文件中读取参数的方法。