2011-10-25 26 views
3

私はウェブ全体を通して私の問題の解決策を狂ったように探しましたが、まだ存在しません。私の問題は、whileループにあるHTTPリクエストで特定のテキストを取得するかどうかをチェックする必要があることです。ループを残してスレッドを続行するか、テキストが存在しない場合はスレッドを完全に停止する必要があります。JMeter While Controller

Thread Group 
.. While controller 
    .. HTTP request 
     .. Response Assertion 
Listener 

whileコントローラでLASTを使用し、HTTP応答をfalseテキストに設定しても機能しません。何かがFALSEに設定されるまで

答えて

2

http://jmeter.apache.org/usermanual/component_reference.html#While_Controller

WHILEコントローラが実行されます。条件をLASTに設定すると、最後のサンプルがFAILSになるまでコントローラを終了しません。あなたが望むテキストが含まれている場合、サンプルをFAILするアサーションを使用していますか?

値をfalseに設定するには、beanshellアサーションを使用するのがよりクリーンな方法かもしれません。

+0

のように動作します。 – Jurij

4

は、次のいずれかがあなたのために働くことを願っています:

 
Thread Group 
    HTTP Request 
    //set-found-condition 
    ${__setProperty(txtFound,FALSE,)} 
    While Controller 
    // invert value in condition - will be executed while txtFound == FALSE 
    Condition = ${__BeanShell(!props.get("txtFound")} 
    . . . 
    [execute your test logic here] 
    . . . 
    YOUR HTTP Request 
     Response Assertion 
     // set your text assertion here 
     // this will results in ${JMeterThread.last_sample_ok} = TRUE if text found 
    IF Controller --FOUND 
    // if text found set separate variable or property - e.g. ${txtFound} - into TRUE 
    Condition = ${JMeterThread.last_sample_ok} 
     HTTP Request 
     //set-found-condition 
     ${__setProperty(txtFound,TRUE,)} // this will be inverted to FALSE in the next WHILE cycle's condition, WHILE cycle will be exited 
    . . . 

私はあなたにも簡単にJSR/BSF/BeanShell PostProcessorはIFと面倒な建設の代わりにTRUEにtxtFoundプロパティを設定するYOUR HTTPリクエストに添付使うかもしれないと思います。

+0

考えていただきありがとうございます... BSコントローラの子としてBSFプリプロセッサを使用すると、Whileコントローラによって正しく評価された状態が得られました。 – pulkitsinghal

3

私はこの問題を回避するためにやったこの

 

Thread Group 
xpath_Extractor or regex_extractor(variable = VAR_1) 
.. While controller(${__javaScript("${VAR_1}" != "REQUIRED")}) 
    .. HTTP request 
Listener 
1

を試してみては正規表現の抽出を作成し、それは必然的に失敗して失敗する私の変数を設定しますようにそれを設定しました。それから私は、私は同じ正規表現の抽出が再び失敗することを作成したが、SUCCESSにデフォルト値を変更し、私の条件の下で$ {__のJavaScript(「$ {projLoad}」!=「SUCCESS」)}

に私のwhileループを設定します

これはおそらく、最もクリーンではないですが、はい、私はテキストが存在しない場合は、サンプルを失敗するレスポンスのアサーションを使用しています魅力