使用CSV数据集配置时强制线程使用相同的输入行

时间:2012-08-30 20:55:34

标签: testing jmeter

我正在尝试构建一个可以对服务器进行http调用的Jmeter测试计划。线程组中的每个线程将从CSV文件中读取2个参数并使用参数进行http调用,并继续使用相同的参数进行相同的调用,例如1000次,每次线程执行之间的延迟为10秒。

http呼叫看起来像

/service/method?param1=${param1}&param2=${param2}

CSV是这样的:

1,2
3,4
5,6
7,8

我设置的测试计划除大部分问题外大部分都有效。我希望每个线程在线程执行时都使用相同的参数(相同的输入行)。目前唯一的方法是设置Recycle on EOF = true,但线程会随机选择值。 Param1和Param2可以是随机生成的值,只要它们在整个执行过程中都坚持使用相同的线程。

无论如何我能做到这一点吗?

谢谢!

2 个答案:

答案 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文件中读取参数的方法。