2015-01-02 9 views
5

Jmeter 2.12を使用すると、JMeterループコントローラでクッキーがリセットされないことがあります。私は考えることができるすべてを試しましたが、ループのたびに、以前のログインのCookieの1つが残っています。実際にクッキーをクリアしているようではありません。ここでJMeter 'Loop Controller'の反復でCookieがリセットされませんか?

は、私は一緒に私のループを置く方法です:

Thread Group 1 
    -- Loop Controller (3x) 
    -- Simple Controller 
     -- HTTP Header Manager 
     -- HTTP Cookie Manger (with 'Clear cookies each iteration?' enabled) 
     -- BeanShell sampler - with code that tries to clear all cookies 
     -- HTTP /login (gets cookies and auth headers) 
     -- ... various HTTP Samplers ... 
     -- HTTP /logout 

私は(上記のように)このコードでBeanShellのサンプラーを追加しようとしたが、何もしていないようだ。

import org.apache.jmeter.protocol.http.control.CookieManager; 
import org.apache.jmeter.protocol.http.control.HeaderManager; 

CookieManager cManager = sampler.getCookieManager(); 
cManager.clear(); 
HeaderManager hManager = sampler.getHeaderManager(); 
hManager.clear(); 

答えて

3
  1. ループコントローラは反復回数を増やしません。あなたは、vars.getIteration() Beanshellコード行を評価することによってそれをテストすることができます。スレッドグループレベルで繰り返しが増えています。これを無効にするには、Beanshell対応のテストエレメント(サンプラー、プリ/ポストプロセッサー、アサーションなど)でvars.incIteration()メソッドを呼び出すことができます。
  2. クッキーを消去するBeanshellコードは、cManagerインスタンスが戻されないサンプラーに。次のようにあなたのコードを変更する必要があります。

    CookieManager cManager = sampler.getCookieManager(); 
    cManager.clear(); 
    sampler.setCookieManager(cManager); 
    

    のでsamplerがクリアクッキー

  3. とその「CMANAGER」インスタンスを持つことができ

のApache JMeterの中BeanShellのスクリプトの詳細についてはHow to use BeanShell: JMeter's favorite built-in componentガイドを参照してください。

+0

ありがとう、私は反復変数について知りませんでした。 – djangofan

+0

これを実行するすべての人には、 sampler.getCookieManager()。clear();が必要です。 – rpgFANATIC

+0

スーパー、それは私のための魅力のように働いた! –

6

私は問題を理解しました。 'HTTP Cookie Manager'には 'Cookie each iteration'というオプションがありますが、その反復にはループコントローラは含まれていません。それが指すのは、 'スレッドグループ'の反復/ループだけです。これは明らかではなかったし、私はこれを理解するまで半日を無駄にした。チェックボックスが「各スレッドグループ反復のクッキーをクリアする」と答えた場合、混乱することはありませんでした。期待はずれの。

関連する問題