2012-07-25 72 views
2

我身边有4个文件名为:JMeter的:运行所有测试在一个文件

Test_1.csv 
Test_2.csv 
... 

在每个测试文件中的每一行都具有以下格式:

method;request 

其中,method是网址我打电话和request是我对它的要求。所有配置都可以获取这些值并形成URL。

但是,首先必须运行Test_1.csv,然后Test_2.csv必须运行等。要做到这一点,我已经创建了5个线程组在以下层次:

Test Plan 
| 
+- Step 1 
    | 
    +- HTTP request 
    +- CSV Data Set Config <- Reads from Test_1.csv 
    +- Uniform Random Timer 
+- Step 2 
    | 
    +- HTTP request 
    +- CSV Data Set Config <- Reads from Test_2.csv 
    +- Uniform Random Timer 

而且我也选择了在我的测试计划Run thread groups consecutively选项。每个线程组都配置了20个线程。现在,我想要做的是,步骤1应该运行Test_1.csv中的每个测试,然后步骤2应该执行并运行Test_2.csv中的每一行。但是,发生的情况是,步骤1运行Test_1.csv的前20行,然后启动第2步,运行20个测试并继续。然后,在所有步骤完成后,步骤1再次运行,并运行与Test1.csv非常相同的20行。我希望它只运行一次,循环测试文件中的所有行,然后退出并将控制交给下一个线程。

我该如何解决这个问题?

+0

得到了答案? – 2012-08-18 21:07:03

回答

0

尝试使用以下模式:

 
Test Plan 
    Thread Group #1 
    Number of Threads: N 
     . . . 
     While Controller 
     Condition: ${__javaScript("${request}"!="<EOF>",)} - until the EOF 
      CSV Data Set Config 
      Filename: [path to your file with test-data] - Test_1.csv in this case 
      Variable Names: method,request 
      HTTP Request 
       Uniform Random Timer 
      . . .   
    Thread Group #2 
     . . . 
     [same for Test_2.csv] 
    Thread Group #3 
     . . . 
     [same for Test_3.csv] 
+0

只是一个想法:这While Loop解决阅读,直到EOF的问题,但没有更有意义的请求都在一个线程组?然后它们默认被串行执行,并且线程的控制很容易。我不确定这是否是一种构建测试的“好”方法,但它符合OP的理想运行方式,无论好坏如何...... – 2012-07-27 15:13:25

+0

嗨,奥利弗。谢谢你的提示。认为你是对的,但在我看来,我可以记住While Controller使用的问题 - 以及它可以在以前的版本,甚至只有我的“本地”问题:采样器AFTER虽然同一级别的控制器没有执行,所以你所描述的模式是无效的,我上面的代码只是解决这个问题。如果这已经修复或从未成为问题,那么你的方法肯定会更好。 – 2012-07-27 15:39:17

0

JMeter的插件ParameterizedController可以帮你打电话给你测试计划的部分,如调用函数在一个普通的编程语言。更重要的是,你可以用变量参数化这些调用。

相关问题