web-dev-qa-db-fra.com

JMeter utilise la variable beanshell dans la requête HTTP

Je suis une recrue absolue ici (Java je veux dire), j'ai passé des heures à chercher une solution, maintenant je veux juste me tirer dessus.
Je souhaite créer une chaîne dans l'assertion beanshell qui est placée juste au-dessus de la requête HTTP.

  • Dans le beanshell, j'ai écrit:

    String docid="abcd";
    

    (en réalité je souhaite concaténer une chaîne avec quelques variables)

  • Dans la requête HTTP, envoyez les paramètres que j'ajoute ${docid}.

12
Suyash

Dans section de description de l'assertion BeanShell vous pouvez trouver ce qui suit:

 vars -  JMeterVariables  - e.g. vars.get("VAR1"); vars.put("VAR2","value"); vars.putObject("OBJ1",new Object()); 
 props - JMeterProperties (class Java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");

Donc, pour définir la variable jmeter dans le code beanshell (échantillonneur d'assertion BeanShell dans votre cas), utilisez ce qui suit:

String docid = "abcd";
vars.put("docid",docid);

ou simplement

vars.put("docid","abcd");

et vous pouvez le faire référence comme $ {docid}, comme vous l'avez fait dans votre requête HTTP.

21
Aliaksandr Belik

Si vous ne connaissez pas Java bien, vous pouvez utiliser l'un des éléments de test BSF ou JSR223, puis sélectionner le langage Javascript comme langage de script

http://jmeter.Apache.org/usermanual/component_reference.html#JSR223_Sampler

3
UBIK LOAD PACK

Si vous avez besoin de passer la valeur d'un échantillonneur bean Shell à un autre, vous devez utiliser des variables.

vars.put("a", "something")

Dans un autre échantillonneur, vous devriez avoir quelque chose comme:

String otherSampler = vars.get("a")

À propos du débogage des échantillonneurs Shell - Ce n'est pas si facile. Je suggère d'utiliser l'objet SampleResult. Comment l'utiliser, vous pouvez voir ici Debugging Bean Shell Sampler

1