javascript - example - jmeter random variable
En JMeter y BeanShell, ¿cómo puedo hacer una variable en minúscula? (5)
Hmmmm, tu código de shell de frijoles no funcionó para mí. La muestra de shell de frijol devolvió:
Response code: 500
Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String blah = AAP; vars.put("blah", blah.toLowerCase()); //${blah} now availab . . . '''' : Typed variable declaration : Void initializer
Agregué dos comillas dobles para resolverlo:
String blah = "${my_initial_reference}";
vars.put("blah", blah.toLowerCase()); //${blah} now available
En los Parámetros de usuario de JMeter, ¿cómo puedo hacer una variable en minúscula?
Columna izquierda
my_lowercase_variable
Columna derecha
${__BeanShell(''${my_variable}''.toLowerCase())} //fails
o
${__javaScript(''${my_variable}''.toLowerCase())} //fails
Tal que ${my_lowercase_variable}
es minúscula de ${my_variable}
. Intentó con cita y sin y escapando y tal. Sin suerte. Cualquier trucos o consejos bienvenida.
Nota personal.
Resulta ser un trazador de líneas dos en BeanShell Sampler en lugar de un comando __BeanShell. No exactamente en los ejemplos, lamentablemente.
Agregué BeanShell Sampler bajo el Thread Group, luego hice una variable. No se requieren parámetros en el formulario solo los dos guiones del trazador de líneas a continuación. Siempre que no cambie la variable, puedo copiar los datos en otra variable, cambiarla en su lugar y luego hacer una referencia de Valor cuando sea necesario.
Primero defina una variable en algunos Parámetros del usuario o tal, por ejemplo:
Name: my_initial_reference
Value: ITS IN CAPS
Agregue un Bean Sampler bajo Preferencias de usuario o lista de definiciones (justo al lado, no es un proceso secundario)
Meter en:
String blah = "${my_initial_reference}"; //
vars.put("blah", blah.toLowerCase()); //${blah} = "its in caps" now available
Ahora debajo de eso con pares Nombre / Valor puedo asignar $ {blah} como el valor al nombre de proceso que lo requiera.
Tenga en cuenta que la respuesta de depuración aún mostrará el valor inicial en mayúsculas, pero también verá blah = its en mayúsculas, que es lo que quería usar.
Las funciones de beans y JavaScript en este uso fallarán, porque no importan los paquetes que necesita para usar .toLowerCase
.
Si realmente necesita usar una función para convertir mayúsculas / minúsculas (en lugar de declararlas como minúsculas en primer lugar), es posible que deba escribir un guión posterior al procesador completo en beanshell para importar los paquetes necesarios.
Simplemente puede agregar una función
${__lowercase(${VAL},VALUE)}
${__uppercase(${VAL},VALUE)}
Nota: VAL puede correlacionarse o ser un valor paramiterizado (er VAL = TO LOWER o VAL = TO UPPER). Podemos usar esta función en beanshell (pre-procesador / post-procesador / sampler). Versión de Jmeter usando (2.6).
Podemos usarlo donde queramos en el script como $ {VALUE}.
${__javaScript(''${foobar}''.toLowerCase())}
funciona. Si el resultado es ${foobar}
lugar del desired value
, significa que la variable no ha sido declarada
Tenga en cuenta que las variables se definen solo después de que se haya analizado el componente "Variable definida por el usuario". Las variables no se pueden reutilizar dentro de un único componente "Variable definida por el usuario", por ejemplo:
La segunda fila en esa imagen no podrá referirse a la variable my_variable
en la primera fila. Para poder referirse a la primera variable, se necesitan dos componentes de "Variable definida por el usuario". La primera variable estará en el primer componente y la segunda variable en el segundo, por ejemplo:
Con eso, ${my_lower_case_variable}
se convertirá con éxito en some value
.
${__BeanShell( " ${my_variable} " .toLowerCase())}
también funciona. (Tenga en cuenta que Bean Shell necesita comillas dobles. El código de su pregunta usa comillas simples).
Otra forma es usar vars.get
:
${__javaScript(vars.get(''my_variable'').toLowerCase())}
${__BeanShell(vars.get("my_variable").toLowerCase())}