記事ディレクトリ
1. IFコントローラー(イフコントローラー)パラメーターの説明
可以控制其下面的子/后代元素是否执行;如果为 true 则执行;如果为 false 则都不执行
スレッドグループの右ボタンを選択 >>> 追加 >>> ロジックコントローラー >>> IFコントローラー (Ifコントローラー)
(1)、式 (true または false に評価される必要があります): 式 (値は true または false である必要があります)、つまり、右側のテキスト ボックスに入力された条件値は true または false である必要があります (デフォルト)。
(2)、最後のサンプルのステータスを使用する: ショートカット、最後のサンプラーの結果が渡されると、変数が参照されます。クリックすると、式ボックスに生成されます: ${JMeterThread.last_sample_ok}
(3)、条件を変数式として解釈しますか?: デフォルトでは、このオプションがチェックされ、条件は変数式として解釈されます (__jexl3 または __groovy 式を使用する必要があります) [この項目が選択されると、次のことを意味します:変数値は文字列 true と等しい (大文字と小文字は区別されません)】
-
チェックを外す:判定したい式を直接入力するだけです判定式がtrueの場合、「1!=2」などのifコントローラでリクエストを実行すると、以下のhttpリクエストが実行されます
-
確認: このとき、条件式を式に直接記入することはできず、関数を使用して条件式の真/偽を計算する必要があります。使用できる関数は _jexl3 と _groovy です。
(4)、すべての子項目に対して評価しますか?: 条件は各子項目に作用し、各子項目の実行時に条件が 1 回判定されます。通常はチェックされず、状態は通常 1 回のみ判断されます
ノート:
-
テキスト ボックス上の黄色の感嘆符は、パフォーマンスを向上させるために __jexl3 または __groovy 式を使用することが推奨されていることを示しています。これがデフォルトの方法です。
-
IF コントローラーはその子に対してのみ動作できます。
-
jexl の正式名: Jakarta Commons Jexl は、式言語 (Java Expression Language) インタプリタです。
if ロジックコントローラーの Expression に条件式を直接入力することはできず、関数を使用して条件式を true/false として計算する必要があります。使用できる関数は __jexl3 関数と __groovy 関数です。
A: ${flag} などの変数、値が true の場合は合格とみなされ、それ以外の場合は false とみなされます。
B: 関数、条件判定は、js、groovy、jexl3 の 3 つのスクリプト言語を同時にサポートしますが、パフォーマンス上の理由から、js の使用は推奨されません
-
js 構文の例: KaTeX 解析エラー: '}' が予期され、入力の最後に 'EOF' が発生しました: …_\_javaScript(" {count}" == "1"")}
-
Groovy 構文の例: ${__groovy(vars.get(“count”) != “1”)}
-
jexl3 構文の例: KaTeX 解析エラー: '}' が予期されましたが、入力の最後に 'EOF' が発生しました: {\_\_jexl3( {count}< 10)}
2. テスト計画の設計
(1)、テスト計画を右クリックし、<<< スレッド (ユーザー) <<< スレッド グループを追加します。
(2)、スレッド グループを右クリックし、<<< 構成要素 <<< ユーザー定義変数を追加します
-
カウント : 1
-
フラグ : true
(3)、スレッド グループを右クリックし、<<< ロジック コントローラー <<< IF コントローラーを追加します。
- 勾選択条件を変数式として解釈しますか?
${
flag}
(4)、IF コントローラーを右クリック <<< サンプラー <<< デバッグ サンプラーを追加
(5)、スレッド グループを右クリック <<< 追加 <<< リスナー <<< 結果ツリーを表示
(6) クリックして開始し、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
如图,IF 控制器 返回的是 true,所以会执行 调试取样器
(7) ユーザー定義変数のコンポーネントを変更し、フラグパラメータを false に変更します。
(8) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
如图,IF 控制器 返回的是 false,所以不会执行 调试取样器
(9) ユーザー定義変数の構成要素を変更し、フラグパラメータを aaaaa に変更します。
(10)、クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示、デバッグサンプラーが実行されているかどうかを確認します
如图,IF 控制器 返回的是 false,所以不会执行 调试取样器
用户定义的变量 组件中的 flag 值只要不是 true,则都为 false
2.1、魅力的な文章
(1)、ユーザー定義変数コンポーネントを変更し、flag パラメーターを true に変更します。
(2) Groovy 構文を使用するように IF コントローラーを変更する
// 两种写法选一种即可
${
__groovy(vars.get("count")=="1")}
${
__groovy("${count}"=="1")}
(3) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
IF 控制器 中的 ${__groovy(vars.get("count")=="1")} 返回值为 true,所以 调试取样器 会执行
(4) ユーザー定義変数コンポーネントを変更し、count パラメータを 2 に変更します。
(5) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
IF 控制器 中的 ${__groovy(vars.get("count")=="1")} 返回值为 false,count 值为 2,所以 调试取样器 不会执行
2.2. JavaScriptの記述方法
(1) ユーザー定義変数コンポーネントを変更し、count パラメーターを 1 に変更します。
- カウント : 1
(2) JavaScript 構文を使用するように IF コントローラーを変更します。
${
__javaScript("${count}"=="1")}
(3) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
IF 控制器 中的 ${__javaScript("${count}"=="1")} 返回值为 true,所以 调试取样器 会执行
(4) ユーザー定義変数コンポーネントを変更し、count パラメータを 2 に変更します。
(5) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
IF 控制器 中的 ${__javaScript("${count}"=="1")} 返回值为 false,count 值为 2,所以 调试取样器 不会执行
2.3、jexl3の書き込み方法
(1) ユーザー定義変数コンポーネントを変更し、count パラメーターを 1 に変更します。
- カウント : 1
(2) jexl3 構文を使用するように IF コントローラーを変更します。
// 四种写法,选一种即可
${
__jexl3(${
count}=="1")}
//${__jexl3(${count}==1)}
//${__jexl3(${count}<10)}
//${__jexl3("${count}"=="1")}
(3) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
IF 控制器 中的 ${__jexl3(${count}=="1")} 返回值为 true,所以 调试取样器 会执行
(4) ユーザー定義変数コンポーネントを変更し、count パラメータを 2 に変更します。
(5) クリックしてすべてクリア、クリックして開始、クリックして結果ツリーを表示し、デバッグサンプラーが実行されるかどうかを確認します
IF 控制器 中的 ${__jexl3(${count}=="1")} 返回值 为 false,count 值为 2,所以 调试取样器 不会执行