1

JMeter バージョン 2.13 r1665067

そのため、CookieManager 内でユーザー定義変数や JMeter プロパティ変数を使用すると、問題が発生するようです。

CookieManager 内の Cookie の値として変数を使用する場合、それがユーザー定義の Var またはプロパティ Var であるかどうかに関係なく、BeanShell Pre および PostProcessor 内で Cookie の値を表示しようとすると同じ問題が発生します。

Cookie Manager が以下の場合: *1 行目はプロパティ変数を使用する場合で、2 行目はユーザー定義変数の変数を使用する場合です。*参考までに、両方の行は同時に使用されません

クッキーマネージャー:

      NAME        VALUE                DOMAIN        PATH
1st)  MYID    ${__P(propCookie)}  www.mydomain.com     /
                      OR
2nd)  MYID     ${userCookie}      www.mydomain.com     /

propCookie変数は、CLI で渡される、以下のように .properties ファイルで定義されます。

COMMAND-LINE --> -JpropCookie=SRV1
IN PROP FILE --> propCookie=SRV1

また、userCookie変数は、次のようにユーザー定義変数構成要素内で定義されます。

  NAME             VALUE           DESCRIPTION
userCookie   ${__P(propCookie)}   User var using prop variable as value


次に、テストを実行すると、結果ツリーの[リクエスト] タブに Cookie が表示され、正しい値が割り当てられていることがわかります。これは良いことです... しかし、Cookie をBeanShell のプリ/ポスト プロセッサ。実際の値ではなく、単に変数を表示します。

BeanShell プリプロセッサ コード

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

log.info("### Inside BeanShell PreProcessor:");
CookieManager manager = sampler.getCookieManager();
log.info("Cookie Count = '" + manager.getCookieCount() + "'");

for (int i = 0; i < manager.getCookieCount(); i++) {
    Cookie cookie = manager.get(i);
    log.info("\t\t  Cookie.getName() = '" + cookie.getName() + "'");
    log.info("\t\t Cookie.getValue() = '" + cookie.getValue() + "'");
}

ログ内の BeanShell スクリプトの出力は次のとおりです。

2015/04/29 14:33:00 INFO  - jmeter.util.BeanShellTestElement: ### Inside BeanShell PreProcessor: 
2015/04/29 14:45:58 INFO  - jmeter.util.BeanShellTestElement: Cookie Count = '1' 
2015/04/29 14:33:00 INFO  - jmeter.util.BeanShellTestElement:         Cookie.getName() = 'MYID' 
2015/04/29 14:33:00 INFO  - jmeter.util.BeanShellTestElement:        Cookie.getValue() = '${userCookie}' 


したがって、BeanShell からの出力でわかるように、getValue()関数は、Cookie の値に割り当てられた変数を次のように正確に出力しています --> " ${userCookie} " であり、実際の Cookie の値ではありません。 「SRV1」…

最後に、自動的に作成されるはずの "COOKIE_" 変数を使用しようとすると、これを BeanShell vars.get("COOKIE_MYID")で使用すると、毎回"null"が出力されます...ここにあるように、 jmeter.propertiesファイルに設定された適切な Cookie プロパティなので、何が問題なのかわかりません。

CookieManager.allow_variable_cookies=true
CookieManager.save.cookies=true
CookieManager.name.prefix=COOKIE_

なぜこれが起こっているのか、私はほとんど困惑しているので、誰かがなぜこれが起こっているのかについてのアイデアを持っているなら、それは大歓迎です!

前もってありがとう、
マット

4

1 に答える 1

1

getCookieHeaderForURLHTTP Request Sampler は、値を適切に置き換えるCookieManager のメソッドを使用して実際に Cookie を設定します。

ビーンシェルでは、

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

manager = sampler.getCookieManager();
log.info(manager.getCookieHeaderForURL(new URL("http://www.google.com")));   //update the URL

これにより、Cookie の値が更新されます。


CookieManager の get & add メソッドはHTTP Cookie Manager、実行時に Cookie を取得および追加するために使用されます。したがって、getValueメソッドは値をそのまま返します。getCookieHeaderForURL更新された値を持つドメインの Cookie Manager から適切な Cookie を取得します。

于 2015-04-29T21:06:34.717 に答える