20. Funciones y variables

Las funciones de JMeter son valores especiales que pueden llenar campos de cualquier Sampler u otro elemento en un árbol de prueba. Una llamada de función se ve así:

${__nombreDeFunción(var1,var2,var3)}

Donde "__functionName" coincide con el nombre de una función.
Los paréntesis rodean los parámetros enviados a la función, por ejemplo ${__time(YMD)} Los parámetros reales varían de una función a otra. Las funciones que no requieren parámetros pueden omitir los paréntesis, por ejemplo, ${__threadNum} .

Si un parámetro de función contiene una coma, asegúrese de escapar con " \ ", de lo contrario, JMeter lo tratará como un delimitador de parámetro. Por ejemplo:

${__hora(EEE\, d MMM aaaa)}
Si no se escapa la coma, por ejemplo, ${__javaScript(Math.max(2,5))} , obtendrá un error como:
ERROR - jmeter.functions.JavaScript: Error al procesar Javascript: [Math.max(2]
    org.mozilla.javascript.EvaluatorException: falta) después de la lista de argumentos (<cmd>#1)
 
Esto se debe a que la cadena " Math.max(2,5) " se trata como dos parámetros de la función __javascript:
Math.max(2 y 5)
Es posible que se produzcan otros mensajes de error.

Las variables se referencian de la siguiente manera:

${VARIABLE}

Si se hace referencia a una función o variable no definida, JMeter no informa ni registra un error; la referencia se devuelve sin cambios. Por ejemplo, si UNDEF no está definido como variable, entonces el valor de ${UNDEF} es ${UNDEF} . Las variables, funciones (y propiedades) distinguen entre mayúsculas y minúsculas. JMeter recorta los espacios de los nombres de las variables antes de usarlos, por lo que, por ejemplo, ${__Random(1,63, LOTTERY )} utilizará la variable ' LOTTERY ' en lugar de '  LOTTERY  '.

Las propiedades no son lo mismo que las variables. Las variables son locales para un subproceso; Las propiedades son comunes a todos los subprocesos y es necesario hacer referencia a ellas mediante la función __P o __property .
Cuando use \ antes de una variable para una ruta de Windows, por ejemplo , C:\test\${test} , asegúrese de escapar de \ ; de lo contrario, JMeter no interpretará la variable, ejemplo: C:\\test\\${test} .
Alternativamente, simplemente use / en su lugar para el separador de ruta, por ejemplo, C:/test/${test} : las JVM de Windows convertirán los separadores según sea necesario.

Lista de funciones, agrupadas libremente en tipos.

Tipo de funciónNombreComentarioYa que
Información threadNumobtener el número de hilo1.X
Información threadGroupNameobtener el nombre del grupo de subprocesos4.1
Información samplerNameobtener el nombre de la muestra (etiqueta)2.5
Información máquinaIPobtener la dirección IP de la máquina local2.6
Información nombre de la máquinaobtener el nombre de la máquina local1.X
Información tiempodevolver la hora actual en varios formatos2.2
Información cambio de horadevolver una fecha en varios formatos con la cantidad especificada de segundos/minutos/horas/días agregados3.3
Información Iniciar sesiónregistrar (o mostrar) un mensaje (y devolver el valor)2.2
Información iniciar sesiónregistrar (o mostrar) un mensaje (valor de retorno vacío)2.2
Aporte CadenaDesdeArchivoleer una línea de un archivo1.9
Aporte Archivo a cadenaleer un archivo completo2.4
Aporte CSVLeerleer desde un archivo delimitado por CSV1.9
Aporte XPathUsar una expresión XPath para leer de un archivo2.0.3
Aporte cadena a archivoescribir una cadena en un archivo5.2
Cálculo encimeragenerar un número creciente1.X
Formateo dateTimeConvertConvierta una fecha u hora del formato de origen al de destino4.0
Cálculo digerirGenerar un resumen (SHA-1, SHA-256, MD5...)4.0
Cálculo sumaintagregar números enteros1.8.1
Cálculo sumalargaagregar números largos2.3.2
Cálculo Aleatoriogenerar un número aleatorio1.9
Cálculo Fecha aleatoriagenerar una fecha aleatoria dentro de un rango de fechas específico3.3
Cálculo RandomFromMultipleVarsextrae un elemento de los valores de un conjunto de variables separados por |3.1
Cálculo cadena aleatoriagenerar una cadena aleatoria2.6
Cálculo UUIDgenerar un UUID de tipo 4 aleatorio2.9
secuencias de comandos maravillosoejecutar un script de Apache Groovy3.1
secuencias de comandos beanshellejecutar un script BeanShell1.X
secuencias de comandos JavaScriptprocesar JavaScript (Nashorn)1.9
secuencias de comandos jexl2evaluar una expresión Commons Jexl2jexl2(2.1.1)
secuencias de comandos jexl3evaluar una expresión Commons Jexl3jexl3 (3.0)
Propiedades isPropDefined Probar si existe una propiedad4.0
Propiedades propiedad leer una propiedad2.0
Propiedades PAGSleer una propiedad (método abreviado)2.0
Propiedades establecer propiedadestablecer una propiedad JMeter2.1
Variables separarDividir una cadena en variables2.0.2
Variables evaluarevaluar una expresión variable2.3.1
Variables evalVarevaluar una expresión almacenada en una variable2.3.1
Propiedades está definido por Var Probar si existe una variable4.0
Variables Vevaluar un nombre de variable2.3RC3
Cuerda carbonizarsegenerar valores de caracteres Unicode a partir de una lista de números2.3.3
Cuerda cambio de casoCambiar de caso siguiendo diferentes modos4.0
Cuerda escapeHtmlCodificar cadenas usando codificación HTML2.3.3
Cuerda escapeOroRegexpCharscita meta caracteres utilizados por la expresión regular ORO2.9
Cuerda escapeXmlCodificar cadenas usando la codificación XMl3.2
Cuerda función de expresión regularanalizar la respuesta anterior usando una expresión regular1.X
Cuerda no escaparCadenas de proceso que contienen escapes de Java (por ejemplo, \n & \t)2.3.3
Cuerda unescapeHtmlDecodificar cadenas codificadas en HTML2.3.3
Cuerda urldecodeDecodificar una cadena application/x-www-form-urlencoded2.10
Cuerda códigourlenCodificar una cadena en una cadena application/x-www-form-urlencoded2.10
Cuerda TestPlanNameDevuelve el nombre del plan de prueba actual2.6

20.1 Qué pueden hacer las funciones

Hay dos tipos de funciones: valores estáticos definidos por el usuario (o variables) y funciones integradas.
Los valores estáticos definidos por el usuario le permiten definir las variables que se reemplazarán con su valor estático cuando se compila y envía un árbol de prueba para su ejecución. Este reemplazo ocurre una vez al comienzo de la ejecución de la prueba. Esto podría usarse para reemplazar el campo DOMINIO de todas las solicitudes HTTP, por ejemplo, haciendo que sea sencillo cambiar una prueba para apuntar a un servidor diferente con la misma prueba.

Tenga en cuenta que las variables actualmente no se pueden anidar; es decir , ${Var${N}} no funciona. La función __V (variable) se puede usar para hacer esto: ${__V(Var${N})} . También puede usar ${__BeanShell(vars.get("Var${N}")} .

Este tipo de reemplazo es posible sin funciones, pero era menos conveniente e intuitivo. Requería que los usuarios crearan elementos de configuración predeterminados que llenarían los valores en blanco de Samplers. Las variables permiten reemplazar solo una parte de cualquier valor dado, no solo completar valores en blanco.

Con las funciones integradas, los usuarios pueden calcular nuevos valores en tiempo de ejecución en función de los datos de respuesta anteriores, en qué subproceso se encuentra la función, la hora y muchas otras fuentes. Estos valores se generan nuevos para cada solicitud durante el transcurso de la prueba.

Las funciones se comparten entre subprocesos. Cada ocurrencia de una llamada de función en un plan de prueba es manejada por una instancia de función separada.

20.2 ¿Dónde se pueden usar funciones y variables?

Las funciones y variables se pueden escribir en cualquier campo de cualquier componente de prueba (aparte del TestPlan, consulte a continuación). Algunos campos no permiten cadenas aleatorias porque esperan números y, por lo tanto, no aceptarán una función. Sin embargo, la mayoría de los campos permitirán funciones.

Las funciones que se utilizan en el plan de prueba tienen algunas restricciones. Las variables de subprocesos de JMeter no se habrán configurado completamente cuando se procesen las funciones, por lo que los nombres de variables pasados ​​como parámetros no se configurarán y las referencias de variables no funcionarán, por lo que split() y regex() y las funciones de evaluación de variables no funcionarán. trabajo La función threadNum() no funcionará (y no tiene sentido a nivel de plan de prueba). Las siguientes funciones deberían funcionar bien en el plan de prueba:

  • sumaint
  • sumalarga
  • nombre de la máquina
  • beanshell
  • maravilloso
  • JavaScript
  • jexl2/jexl3
  • aleatorio
  • tiempo
  • funciones de propiedad
  • funciones de registro

Los elementos de configuración son procesados ​​por un subproceso separado. Por lo tanto, funciones como __threadNum no funcionan correctamente en elementos como Variables definidas por el usuario. Tenga en cuenta también que las variables definidas en un elemento UDV no están disponibles hasta que se haya procesado el elemento.

Cuando use referencias a variables/funciones en código SQL (etc.), recuerde incluir las comillas necesarias para las cadenas de texto, es decir, use
SELECCIONE el elemento de la tabla donde nombre = '$ {VAR}'
no
SELECCIONE el elemento de la tabla donde nombre = $ {VAR}
(a menos que el propio VAR contenga las comillas)

20.3 Cómo referenciar variables y funciones

La referencia a una variable en un elemento de prueba se realiza colocando entre paréntesis el nombre de la variable con ' ${ ' y ' } '.

Las funciones se referencian de la misma manera, pero por convención, los nombres de las funciones comienzan con " __ " para evitar conflictos con los nombres de valores de usuario * . Algunas funciones toman argumentos para configurarlas, y estos van entre paréntesis, delimitados por comas. Si la función no acepta argumentos, se pueden omitir los paréntesis.

Los valores de argumento que en sí mismos contienen comas se deben escapar según sea necesario. Si necesita incluir una coma en el valor de su parámetro, escápelo así: ' \, '. Esto se aplica, por ejemplo, a las funciones de secuencias de comandos: Javascript, Beanshell, Jexl, groovy, donde es necesario escapar de las comas que pueden ser necesarias en las llamadas a métodos de secuencias de comandos, por ejemplo.

${__BeanShell(vars.put("nombre"\,"valor"))}

Alternativamente, puede definir su secuencia de comandos como una variable, por ejemplo, en el Plan de prueba:

SCRIPT vars.put("nombre","valor")
A continuación, se puede hacer referencia al script de la siguiente manera:
${__BeanShell(${SCRIPT})}
No es necesario escapar de las comas en la variable SCRIPT porque la llamada a la función se analiza antes de que la variable se reemplace con su valor. Esto funciona bien junto con JSR223 o BeanShell Samplers, ya que se pueden usar para probar scripts Javascript, Jexl y BeanShell.

Las funciones pueden hacer referencia a variables y otras funciones, por ejemplo ${__XPath(${__P(xpath.file),${XPATH})} utilizará la propiedad " xpath.file " como nombre de archivo y el contenido de la variable XPATH como la expresión a buscar.

JMeter proporciona una herramienta para ayudarlo a construir llamadas a funciones para varias funciones integradas, que luego puede copiar y pegar. No escapará automáticamente los valores para usted, ya que las funciones pueden ser parámetros para otras funciones, y solo debe escapar los valores que pretende que sean literales.

Si una cadena contiene una barra diagonal inversa (' \ ') y también contiene una función o una referencia a una variable, la barra diagonal inversa se eliminará si aparece antes de ' $ ' o ' , ' o ' \ '. Este comportamiento es necesario para permitir funciones anidadas que incluyen comas o la cadena ${ . Las barras invertidas antes de ' $ ' o ' , ' o ' \ ' no se eliminan si la cadena no contiene una función o una referencia a una variable.

El valor de una variable o función se puede informar mediante la función __logn() . La referencia de la función __logn() se puede usar en cualquier parte del plan de prueba después de que se haya definido la variable. Alternativamente, la muestra de solicitud de Java se puede usar para crear una muestra que contenga referencias variables; la salida se mostrará en el Listener apropiado. Tenga en cuenta que hay una Muestra de depuración que se puede usar para mostrar los valores de las variables, etc. en el Oyente de vista de árbol.

* Si define una variable estática definida por el usuario con el mismo nombre que una función integrada, su variable estática anulará la función integrada.

20.4 El cuadro de diálogo Ayudante de funciones

El cuadro de diálogo Ayudante de funciones está disponible en el menú Herramientas de JMeter.

Cuadro de diálogo Asistente de funciones
Cuadro de diálogo Asistente de funciones

Usando el asistente de funciones, puede seleccionar una función del menú desplegable y asignar valores para sus argumentos. La columna de la izquierda en la tabla proporciona una breve descripción del argumento, y la columna de la derecha es donde escribe el valor de ese argumento. Diferentes funciones toman diferentes argumentos.

Una vez que haya hecho esto, haga clic en el botón "generar" y se generará la cadena apropiada para que pueda copiar y pegar en su plan de prueba donde quiera.

20.5 Funciones

Función __regex

La función Regex se usa para analizar la respuesta anterior (o el valor de una variable) usando cualquier expresión regular (proporcionada por el usuario). La función devuelve la cadena de la plantilla con los valores de las variables rellenados.

La __regexFunction también puede almacenar valores para uso futuro. En el sexto parámetro, puede especificar un nombre de referencia. Después de ejecutar esta función, los mismos valores se pueden recuperar en momentos posteriores utilizando la sintaxis para valores definidos por el usuario. Por ejemplo, si ingresa " refName " como sexto parámetro, podrá usar:

  • ${refName} para hacer referencia al resultado calculado del segundo parámetro ("Plantilla para la cadena de reemplazo") analizado por esta función
  • ${refName_g0} para hacer referencia a la coincidencia completa analizada por esta función.
  • ${refName_g1} para hacer referencia al primer grupo analizado por esta función.
  • ${refName_g#} para hacer referencia al enésimo grupo analizado por esta función.
  • ${refName_matchNr} para referirse al número de grupos encontrados por esta función.
Si usa pruebas distribuidas, asegúrese de cambiar el modo (consulte jmeter.properties ) para que no sea una eliminación, consulte el error 56376

Parámetros

Atributo
Descripción
Requerido
primer argumento
El primer argumento es la expresión regular que se aplicará a los datos de respuesta. Agarrará todos los partidos. Cualquier parte de esta expresión que desee utilizar en la cadena de su plantilla, asegúrese de incluirla entre paréntesis. Ejemplo: <a href="(.*)"> . Esto tomará el valor del enlace y lo almacenará como el primer grupo (solo hay 1 grupo). Otro ejemplo: <input type="hidden" name="(.*)" value="(.*)"> . Esto tomará el nombre como el primer grupo y el valor como el segundo grupo. Estos valores se pueden usar en su cadena de plantilla
segundo argumento
Esta es la cadena de plantilla que reemplazará la función en tiempo de ejecución. Para hacer referencia a un grupo capturado en la expresión regular, use la sintaxis: $[group_number]$ . Es decir: $1$ , o $2$ . Su plantilla puede ser cualquier cadena.
Tercer argumento
El tercer argumento le dice a JMeter qué coincidencia usar. Su expresión regular puede encontrar numerosas coincidencias. Tienes cuatro opciones:
  • Un entero: le dice a JMeter que use esa coincidencia. ' 1 ' para la primera coincidencia encontrada, ' 2 ' para la segunda, y así sucesivamente
  • RAND : le dice a JMeter que elija una coincidencia al azar.
  • TODO : le dice a JMeter que use todas las coincidencias y cree una cadena de plantilla para cada una y luego las agregue todas juntas. Esta opción es poco utilizada.
  • Un número flotante entre 0 y 1: le dice a JMeter que encuentre la X -ésima coincidencia usando la fórmula: (número_de_coincidencias_encontradas * número_flotante) redondeado al entero más cercano.
No, predeterminado=1
Cuarto argumento
Si se seleccionó ' TODO ' para el valor del argumento anterior, este argumento se insertará entre cada copia adjunta del valor de la plantilla.
No
Quinto argumento
Valor predeterminado devuelto si no se encuentra ninguna coincidencia
No
Sexto argumento
Un nombre de referencia para reutilizar los valores analizados por esta función.
Los valores almacenados son ${refName} (la cadena de plantilla de reemplazo) y ${refName_g#} donde " # " es el número de grupo de la expresión regular (" 0 " puede usarse para referirse a la coincidencia completa).
No
Séptimo argumento
Introduzca el nombre de la variable. Si se especifica, el valor de la variable se usa como entrada en lugar de usar el resultado de la muestra anterior.
No
^

__contador

El contador genera un nuevo número cada vez que se llama, comenzando con 1 e incrementando en +1 cada vez. El contador se puede configurar para mantener separados los valores de cada usuario simulado o para usar el mismo contador para todos los usuarios. Si los valores de cada usuario se incrementan por separado, es como contar el número de iteraciones a través del plan de prueba. Un contador global es como contar cuántas veces se ejecutó esa solicitud.

El contador usa una variable entera para mantener el conteo, que por lo tanto tiene un máximo de 2,147,483,647.

Las instancias de la función de contador son completamente independientes. El contador global - " FALSO " - es mantenido por separado por cada instancia de contador.

Múltiples llamadas a la función __counter en la misma iteración no incrementarán más el valor.
Si desea tener un conteo que aumente para cada muestra, use la función en un preprocesador como Parámetros de usuario .

Parámetros

Atributo
Descripción
Requerido
primer argumento
TRUE si desea que el contador de cada usuario simulado se mantenga independiente y separado de los demás usuarios. FALSO para un contador global.
segundo argumento
Un nombre de referencia para reutilizar el valor creado por esta función.
Los valores almacenados tienen la forma ${refName} . Esto le permite mantener un contador y consultar su valor en varios lugares.
No
^

__número de hilo

La función de número de subproceso simplemente devuelve el número del subproceso que se está ejecutando actualmente. Estos números son únicos localmente con respecto a su grupo de subprocesos, lo que significa que el subproceso n.º 1 en un grupo de subprocesos no se puede distinguir del subproceso n.º 1 en otro grupo de subprocesos, desde el punto de vista de esta función.

La función devuelve un número entre uno y el número máximo de subprocesos en ejecución. Tenga en cuenta que si está utilizando el código JSR223 con el objeto JMeterContext ( variable ctx ), el siguiente código devuelve un número entre cero y (número máximo de subprocesos en ejecución menos uno)
ctx.getThreadNum()

No hay argumentos para esta función.

Ejemplo de uso:

${__número de subprocesos}
devuelve un número entre 1 y el número máximo de subprocesos en ejecución configurados en el grupo de subprocesos que lo contiene

Esta función no funciona en ningún elemento de configuración (p. ej., variables definidas por el usuario), ya que se ejecutan desde un subproceso independiente. Tampoco tiene sentido usarlo en el Plan de Prueba.
^

__threadGroupName

La función de nombre de grupo de subprocesos simplemente devuelve el nombre del grupo de subprocesos que se está ejecutando.

No hay argumentos para esta función.

Ejemplo de uso:

${__nombre de grupo de subprocesos}

Esta función no funciona en ningún elemento de configuración (p. ej., variables definidas por el usuario), ya que se ejecutan desde un subproceso independiente. Tampoco tiene sentido usarlo en el Plan de Prueba.
^

__intSuma

La función intSum se puede utilizar para calcular la suma de dos o más valores enteros.

El nombre de referencia es opcional, pero no debe ser un número entero válido.

Parámetros

Atributo
Descripción
Requerido
primer argumento
El primer valor int.
segundo argumento
El segundo valor int.
enésimo argumento
El n -ésimo valor int.
No
último argumento
Un nombre de referencia para reutilizar el valor calculado por esta función. Si se especifica, el nombre de referencia debe contener al menos un carácter no numérico; de lo contrario, se tratará como otro valor int que se agregará.
No

Ejemplos:

${__intSuma(2,5,MIVAR)}
devolverá 7 (2+5) y almacenará el resultado en la variable MYVAR. Entonces ${MYVAR} será igual a 7.
${__intSuma(2,5,7)}
devolverá 14 (2+5+7) y almacenará el resultado en la variable MYVAR.
${__intSuma(1,2,5,${MYVAR})}
devolverá 16 si el valor de MYVAR es igual a 8, 1+2+5+${MYVAR})

^

__sumalarga

La función longSum se puede usar para calcular la suma de dos o más valores largos, use esto en lugar de __intSum siempre que sepa que sus valores no estarán en el intervalo -2147483648 a 2147483647.

Parámetros

Atributo
Descripción
Requerido
primer argumento
El primer valor largo.
segundo argumento
El segundo valor largo.
enésimo argumento
El n -ésimo valor largo.
No
último argumento
Un nombre de referencia para reutilizar el valor calculado por esta función. Si se especifica, el nombre de referencia debe contener al menos un carácter no numérico; de lo contrario, se tratará como otro valor largo que se agregará.
No

Ejemplos:

${__longSuma(2,5,MIVAR)}
devolverá 7 (2+5) y almacenará el resultado en la variable MYVAR. Entonces ${MYVAR} será igual a 7.
${__sumalarga(2,5,7)}
devolverá 14 (2+5+7) y almacenará el resultado en la variable MYVAR.
${__longSuma(1,2,5,${MYVAR})}
devolverá 16 si el valor de MYVAR es igual a 8, 1+2+5+${MYVAR})

^

__StringFromFile

La función StringFromFile se puede utilizar para leer cadenas de un archivo de texto. Esto es útil para ejecutar pruebas que requieren muchos datos variables. Por ejemplo, al probar una aplicación bancaria, es posible que se requieran 100 o 1000 de diferentes números de cuenta.

Consulte también el elemento de prueba CSV Data Set Config que puede ser más fácil de usar. Sin embargo, eso actualmente no admite múltiples archivos de entrada.

Cada vez que se llama, lee la siguiente línea del archivo. Todos los subprocesos comparten la misma instancia, por lo que subprocesos diferentes obtendrán líneas diferentes. Cuando se llega al final del archivo, comenzará a leerse nuevamente desde el principio, a menos que se haya alcanzado el número máximo de bucles. Si hay varias referencias a la función en un script de prueba, cada una abrirá el archivo de forma independiente, incluso si los nombres de archivo son los mismos. [Si el valor se va a usar nuevamente en otro lugar, use diferentes nombres de variables para cada llamada de función].

Las instancias de función se comparten entre subprocesos, y el archivo es (re)abierto por cualquier subproceso que necesite la siguiente línea de entrada, por lo que usar threadNumber como parte del nombre del archivo dará como resultado un comportamiento impredecible.

Si se produce un error al abrir o leer el archivo, la función devuelve la cadena " **ERR** "

Parámetros

Atributo
Descripción
Requerido
Nombre del archivo
Ruta al nombre del archivo. (La ruta puede ser relativa al directorio de inicio de JMeter) Si usa números de secuencia opcionales, el nombre de la ruta debe ser adecuado para pasar a DecimalFormat. Vea a continuación para ver ejemplos.
Nombre de la variable
Un nombre de referencia, refName , para reutilizar el valor creado por esta función. Los valores almacenados tienen la forma ${refName} . El valor predeterminado es " StringFromFile_ ".
No
Número de secuencia de inicio
Número de secuencia inicial (si se omite, el número de secuencia final se trata como un recuento de bucle)
No
Número de secuencia final
Número de secuencia final (si se omite, los números de secuencia pueden aumentar sin límite)
No

El parámetro de nombre de archivo se resuelve cuando el archivo se abre o se vuelve a abrir.

El parámetro de nombre de referencia (si se proporciona) se resuelve cada vez que se ejecuta la función.

Usando números de secuencia:

Cuando se usan los números de secuencia opcionales, el nombre de la ruta se usa como cadena de formato para java.text.DecimalFormat . El número de secuencia actual se pasa como el único parámetro. Si no se especifica el número de inicio opcional, el nombre de ruta se usa tal cual. Las secuencias de formato útiles son:

#
inserte el número, sin ceros ni espacios a la izquierda
000
inserte el número empaquetado en tres dígitos con ceros a la izquierda si es necesario
Uso de cadenas de formato
Aquí hay algunas cadenas de formato y las secuencias correspondientes que generarán.
pin#'.'dat
Generará los dígitos sin ceros a la izquierda y tratará el punto literalmente como
pin1.dat , …, pin9.dat , pin10.dat , …, pin9999.dat
pin000'.'dat
Generará ceros a la izquierda manteniendo el punto. Cuando los números comiencen a tener más dígitos que los tres dígitos que sugiere este formato, la secuencia usará más dígitos como se puede ver en
pin001.dat , … pin099.dat , …, pin999.dat , …, pin9999.dat
pin'.'dat#
Agregará dígitos sin ceros a la izquierda mientras mantiene el punto y genera
pin.dat1 , …, pin.dat9 , …, pin.dat999

Si se requieren más dígitos que caracteres de formato, el número se ampliará según sea necesario.
Para evitar que se interprete un carácter de formato, escríbalo entre comillas simples. Tenga en cuenta que " . " es un carácter de formato y debe estar encerrado entre comillas simples (aunque #. y 000. funcionan como se espera en entornos locales donde el punto decimal también es " . ")
En otros entornos (p. ej ., fr ), el punto decimal es " , " - lo que significa que " #. " se convierte en " nnn, ".
Consulte la documentación de DecimalFormat para obtener detalles completos.
Si el nombre de la ruta no contiene ningún carácter de formato especial, el número de secuencia actual se agregará al nombre; de ​​lo contrario, el número se insertará de acuerdo con las instrucciones de formato.
Si se omite el número de secuencia inicial y se especifica el número de secuencia final, el número de secuencia se interpreta como un recuento de bucles y el archivo se utilizará en la mayoría de los tiempos de " finalización ". En este caso, el nombre del archivo no está formateado.
${__StringFromFile(PIN#'.'DAT,,1,2)} - lee PIN1.DAT , PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)} - lee PIN.DAT dos veces
Tenga en cuenta que " . " en PIN.DAT arriba deberíano ser citado. En este caso, se omite el número de inicio, por lo que el nombre del archivo se usa exactamente como está.

^

__nombreDeMáquina

La función machineName devuelve el nombre de host local. Esto usa el método Java InetAddress.getLocalHost() y lo pasa a getHostName()

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplos:

${__nombreDeLaEquipo()}
devolverá el nombre de host de la máquina
${__nombreDeEquipo}
devolverá el nombre de host de la máquina

^

__máquinaIP

La función machineIP devuelve la dirección IP local. Esto usa el método Java InetAddress.getLocalHost() y lo pasa a getHostAddress()

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplos:

${__máquinaIP()}
devolverá la dirección IP de la máquina
${__máquinaIP}
devolverá la dirección IP de la máquina

^

__javascript¶ _

La función javaScript ejecuta una pieza de código JavaScript (¡no Java!) y devuelve su valor

La función JMeter Javascript llama a un intérprete de JavaScript independiente. Javascript se utiliza como lenguaje de secuencias de comandos, por lo que puede hacer cálculos, etc.

javaScript no es el mejor lenguaje de secuencias de comandos para actuaciones en JMeter. Si su plan requiere una gran cantidad de subprocesos, se recomienda utilizar las funciones __jexl3 o __groovy .
Para el motor Nashorn, consulte la Guía del usuario de Nashorn de la plataforma Java, edición estándar .
Para el motor Rhino, consulte la descripción general de Mozilla Rhino

Las siguientes variables están disponibles para el script:

Rhinoscript permite el acceso a métodos estáticos a través de su objeto Packages. Consulte la documentación de Scripting Java . Por ejemplo, se puede acceder a los métodos estáticos de JMeterContextService así: Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

JMeter no es un navegador y no interpreta el JavaScript en las páginas descargadas.

Parámetros

Atributo
Descripción
Requerido
Expresión
La expresión de JavaScript que se va a ejecutar. Por ejemplo:
  • new Date() - devuelve la fecha y hora actual
  • Math.floor(Math.random()*(${maxRandom}+1)) - un número aleatorio entre 0 y la variable maxRandom
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - un número aleatorio entre las variables minRandom y maxRandom
  • "${VAR}"=="abcd"
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No
Recuerde incluir las comillas necesarias para las cadenas de texto y las variables de JMeter. Además, si la expresión tiene comas, asegúrese de evitarlas. Por ejemplo en:
${__javaScript('${sp}'.slice(7\,99999))}
la coma después de 7 se escapa.

Ejemplos:

${__javaScript(nueva fecha())}
regresará el sábado 09 de enero de 2016 16:22:15 GMT+0100 (CET)
${__javaScript(nueva fecha(),MIFECHA)}
devolverá el sábado 09 de enero de 2016 a las 16:22:15 GMT+0100 (CET) y lo almacenará en la variable MYDATE
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}
utilizará la variable maxRandom, devolverá un valor aleatorio entre 0 y maxRandom y lo almacenará en MYRESULT
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}
utilizará las variables maxRandom y minRandom , devolverá un valor aleatorio entre maxRandom y minRandom y lo almacenará en la variable MYRESULT
${__javaScript("${VAR}"=="abcd",MIRESULTADO)}
comparará el valor de la variable VAR con abcd , devolverá verdadero o falso y almacenará el resultado en MYRESULT

^

__Aleatorio

La función aleatoria devuelve un número aleatorio que se encuentra entre los valores mínimo y máximo dados.

Parámetros

Atributo
Descripción
Requerido
Valor mínimo
Un número
Valor máximo
un numero mas grande
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplos:

${__Aleatorio(0,10)}
devolverá un número aleatorio entre 0 y 10
${__Aleatorio(0,10, MIVAR)}
devolverá un número aleatorio entre 0 y 10 y lo almacenará en MYVAR . ${MYVAR} contendrá el número aleatorio

^

__Fecha aleatoria

La función RandomDate devuelve una fecha aleatoria que se encuentra entre los valores de fecha de inicio y fecha de finalización dados.

Parámetros

Atributo
Descripción
Requerido
Formato de tiempo
Cadena de formato para DateTimeFormatter (predeterminado yyyy-MM-dd )
No
Fecha de inicio
La fecha de inicio, el valor predeterminado es ahora
No
Fecha final
la fecha de finalización
Configuración regional a utilizar para el formato
El formato de cadena de una configuración regional. El código de idioma debe estar en minúsculas. El código del país debe estar en mayúsculas. El separador debe ser un guión bajo, por ejemplo, en_EN . Consulte http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html . Si se omite, de forma predeterminada, la función utiliza la configuración regional uno de Apache JMeter.
No
Nombre de variable
El nombre de la variable a establecer.
No

Ejemplos:

${__Fecha aleatoria(,,2050-07-08,,)}
devolverá una fecha aleatoria entre ahora y 2050-07-08 . Por ejemplo 2039-06-21
${__RandomDate(dd MM aaaa,,08 07 2050,,)}
devolverá una fecha aleatoria con un formato personalizado como 03 04 2034

^

__Cadena aleatoria

La función RandomString devuelve una cadena aleatoria de longitud usando caracteres en chars para usar.

Parámetros

Atributo
Descripción
Requerido
Longitud
Una longitud numérica de la cadena generada
Caracteres a usar
Caracteres utilizados para generar String
No
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplos:

${__Cadena aleatoria(5)}
devolverá una cadena aleatoria de 5 caracteres que pueden ser legibles o no
${__Cadena aleatoria(10,abcdefg)}
devolverá una cadena aleatoria de 10 caracteres seleccionados del conjunto abcdefg , como cdbgdbeebd o adbfeggfad , …
${__RandomString(6,a12zeczclk, MIVAR)}
devolverá una cadena aleatoria de 6 caracteres seleccionados de un conjunto de 12zeczclk y almacenará el resultado en MYVAR , MYVAR contendrá una cadena como 2z22ak o z11kce , …

^

__RandomFromMultipleVars

La función RandomFromMultipleVars devuelve un valor aleatorio basado en los valores de variable proporcionados por Source Variables .

Las variables pueden ser simples o multivaluadas ya que pueden ser generadas por los siguientes extractores: Los vars de valores múltiples son los que se extraen cuando establece -1 para Match Numbers . Esto lleva a la creación de una variable de número de coincidencia llamada varName_matchNr y para cada valor a la creación de la variable varName_n donde n = 1, 2, 3, etc.

Parámetros

Atributo
Descripción
Requerido
Variables de origen
Nombres de variables separados por | que contienen los valores que se utilizarán como entrada para el cálculo aleatorio
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplos:

${__RandomFromMultipleVars(val)}
devolverá una cadena aleatoria basada en el contenido de la variable val teniendo en cuenta si son de varios valores o no
${__RandomFromMultipleVars(val1|val2)}
devolverá una cadena aleatoria basada en el contenido de las variables val1 y val2 teniendo en cuenta si son multivalor o no
${__RandomFromMultipleVars(val1|val2, MYVAR)}
devolverá una cadena aleatoria basada en el contenido de las variables val1 y val2 teniendo en cuenta si son multivalor o no y almacenará el resultado en MYVAR

^

__UUID¶ _

La función UUID devuelve un identificador único universal (UUID) pseudoaleatorio de tipo 4.

Parámetros

Atributo
Descripción
Requerido

Ejemplos:

${__UUID()}
devolverá UUID con este formato: c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^

__CSVRead

La función CSVRead devuelve una cadena de un archivo CSV (cf StringFromFile )

NOTA: JMeter admite varios nombres de archivo.

En la mayoría de los casos, el elemento CSV Data Set Config más nuevo es más fácil de usar.

Cuando se encuentra por primera vez un nombre de archivo, el archivo se abre y se lee en una matriz interna. Si se detecta una línea en blanco, se trata como el final del archivo, lo que permite utilizar comentarios finales.

Todas las referencias posteriores al mismo nombre de archivo utilizan la misma matriz interna. NB: el caso del nombre de archivo es significativo para la función, incluso si al sistema operativo no le importa, por lo que CSVRead (abc.txt, 0) y CSVRead (aBc. txt, 0) se referirían a diferentes matrices internas.

La función *ALIAS permite abrir el mismo archivo más de una vez y también permite nombres de archivo más cortos.

Cada subproceso tiene su propio puntero interno a su fila actual en la matriz de archivos. Cuando un subproceso se refiere por primera vez al archivo, se le asignará la siguiente fila libre en la matriz, por lo que cada subproceso accederá a una fila diferente de todos los demás subprocesos. [A menos que haya más subprocesos que filas en la matriz].

La función divide la línea en cada coma de forma predeterminada. Si desea ingresar columnas que contengan comas, deberá cambiar el delimitador a un carácter que no aparece en ningún dato de columna, configurando la propiedad: csvread.delimiter

Parámetros

Atributo
Descripción
Requerido
Nombre del archivo
El archivo (o *ALIAS ) para leer
número de columna
El número de columna en el archivo. 0 = primera columna, 1 = segunda, etc. " siguiente ": pasa a la siguiente línea del archivo. *ALIAS - abre un archivo y asígnalo al alias

Por ejemplo, podría configurar algunas variables de la siguiente manera:

  • COL1a ${__CSVRead(aleatorio.txt,0)}
  • COL2a ${__CSVRead(aleatorio.txt,1)}${__CSVRead(aleatorio.txt,siguiente)}
  • COL1b ${__CSVRead(aleatorio.txt,0)}
  • COL2b ${__CSVRead(aleatorio.txt,1)}${__CSVRead(aleatorio.txt,siguiente)}
Esto leería dos columnas de una línea y dos columnas de la siguiente línea disponible. Si todas las variables están definidas en el mismo preprocesador de parámetros de usuario, las líneas serán consecutivas. De lo contrario, un subproceso diferente puede tomar la siguiente línea.

La función no es adecuada para usar con archivos grandes, ya que todo el archivo se almacena en la memoria. Para archivos más grandes, use el elemento CSV Data Set Config o StringFromFile .
^

__propiedad

La función de propiedad devuelve el valor de una propiedad de JMeter. Si no se puede encontrar el valor de la propiedad y no se ha proporcionado ningún valor predeterminado, devuelve el nombre de la propiedad. Al proporcionar un valor predeterminado, no es necesario proporcionar un nombre de función: el parámetro se puede establecer en nulo y se ignorará.

Por ejemplo:

  • ${__property(user.dir)} - valor de retorno de user.dir
  • ${__property(user.dir,UDIR)} - devuelve el valor de user.dir y guarda en UDIR
  • ${__property(abcd,ABCD,atod)} - devuelve el valor de la propiedad abcd (o " atod " si no está definido) y guarda en ABCD
  • ${__property(abcd,,atod)} - devuelve el valor de la propiedad abcd (o " atod " si no está definido) pero no lo guarda

Parámetros

Atributo
Descripción
Requerido
Nombre de la propiedad
El nombre de la propiedad que se va a recuperar.
Nombre de la variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No
Valor por defecto
El valor predeterminado de la propiedad.
No
^

__P

Esta es una función de propiedad simplificada que está diseñada para usarse con propiedades definidas en la línea de comando. A diferencia de la función __property , no hay opción para guardar el valor en una variable, y si no se proporciona un valor predeterminado, se supone que es 1. Se eligió el valor 1 porque es válido para variables de prueba comunes como bucles, conteo de hilos, rampa, etc.

Por ejemplo:

Defina el valor de la propiedad:

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
Obtener los valores:
${__P(group1.threads)} - devolver el valor de group1.threads
${__P(group1.loops)} - devolver el valor de group1.loops
${__P(hostname,www.dummy.org) } - devuelve el valor de la propiedad hostname o www.dummy.org si no está definido
En los ejemplos anteriores, la primera llamada de función devolvería 7 , la segunda devolvería 1 y la última devolvería www.dummy.org (a menos que esas propiedades estuvieran definidas ¡en otra parte!)

Parámetros

Atributo
Descripción
Requerido
Nombre de la propiedad
El nombre de la propiedad que se va a recuperar.
Valor por defecto
El valor predeterminado de la propiedad. Si se omite, el valor predeterminado se establece en " 1 ".
No
^

__log

La función de registro registra un mensaje y devuelve su cadena de entrada

Parámetros

Atributo
Descripción
Requerido
Cadena a registrar
Una cuerda
Nivel de registro
OUT , ERR , DEBUG , INFO (predeterminado), WARN o ERROR
No
Texto arrojable
Si no está vacío, crea un Throwable para pasar al registrador
No
Comentario
Si está presente, se muestra en la cadena. Útil para identificar lo que se está registrando.
No

Los nombres de nivel de registro OUT y ERR se utilizan para dirigir la salida a System.out y System.err respectivamente. En este caso, la salida siempre se imprime, no depende de la configuración de registro actual.

${__log(Mensaje)}
escrito en el archivo de registro como " ... subproceso Nombre: Mensaje "
${__log(Mensaje,SALIDA)}
escrito en la ventana de la consola
${__registro(${VAR},,,VAR=)}
escrito en el archivo de registro como " ... subproceso Nombre VAR=valor "
^

__iniciar sesión

La función logn registra un mensaje y devuelve la cadena vacía

Parámetros

Atributo
Descripción
Requerido
Cadena a registrar
Una cuerda
Nivel de registro
OUT , ERR , DEBUG , INFO (predeterminado), WARN o ERROR
No
Texto arrojable
Si no está vacío, crea un Throwable para pasar al registrador
No

Los nombres de nivel de registro OUT y ERR se utilizan para dirigir la salida a System.out y System.err respectivamente. En este caso, la salida siempre se imprime, no depende de la configuración de registro actual.

${__logn(VAR1=${VAR1},SALIDA)}
escribe el valor de la variable en la ventana de la consola
^

__BeanShell

La función BeanShell evalúa el script que se le pasa y devuelve el resultado.

Para el rendimiento, es mejor usar la función __groovy

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell en http://www.beanshell.org/

Tenga en cuenta que se utiliza un intérprete diferente para cada aparición independiente de la función en un script de prueba, pero se utiliza el mismo intérprete para invocaciones posteriores. Esto significa que las variables persisten en las llamadas a la función.

Se puede llamar a una única instancia de una función desde varios subprocesos. Sin embargo, el método de función execute() está sincronizado.

Si se define la propiedad " beanshell.function.init ", se pasa al intérprete como el nombre de un archivo fuente. Esto se puede utilizar para definir métodos y variables comunes. Hay un archivo de inicio de muestra en el directorio bin: BeanShellFunction.bshrc .

Las siguientes variables se establecen antes de que se ejecute el script:

(*) significa que esto se establece antes de que se procese el archivo de inicio, si lo hay. Otras variables varían de una invocación a otra.

Parámetros

Atributo
Descripción
Requerido
Guión BeanShell
Un script beanshell (no un nombre de archivo)
Nombre de variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplo:

${__BeanShell(123*456)}
devuelve 56088
${__BeanShell(fuente("función.bsh"))}
procesa el script en function.bsh

Recuerde incluir las comillas necesarias para las cadenas de texto y las variables de JMeter que representan cadenas de texto.
^

__maravilloso

La función __groovy evalúa los scripts de Apache Groovy que se le pasan y devuelve el resultado.

Si se define la propiedad " groovy.utilities ", el ScriptEngine la cargará. Esto se puede utilizar para definir métodos y variables comunes. Hay un archivo de inicio de muestra en el directorio bin : utility.groovy .

Las siguientes variables se establecen antes de que se ejecute el script:

(*) significa que esto se establece antes de que se procese el archivo de inicio, si lo hay. Otras variables varían de una invocación a otra.

Cuando use esta función, use las variables definidas anteriormente en lugar de usar el reemplazo de cadenas para acceder a una variable en su secuencia de comandos. Seguir este patrón asegurará que sus pruebas funcionen al garantizar que Groovy se pueda almacenar en caché.

Por ejemplo , no haga lo siguiente:

${__groovy("${myVar}".subcadena(0\,2))}

Imagine que la variable myVar cambia con cada transacción, el Groovy anterior no se puede almacenar en caché ya que el script cambia cada vez.

En su lugar, haga lo siguiente, que se puede almacenar en caché:

${__groovy(vars.get("myVar").substring(0\,2))}

Parámetros

Atributo
Descripción
Requerido
Expresión a evaluar
Un script de Apache Groovy (no un nombre de archivo)
Los valores de argumento que en sí mismos contienen comas se deben escapar según sea necesario. Si necesita incluir una coma en el valor de su parámetro, escápelo así: ' \, '
Nombre de variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
No

Ejemplo:

${__maravilloso(123*456)}
devuelve 56088
${__groovy(vars.get("myVar").substring(0\,2))}
Si el valor de var es JMeter , devolverá JM mientras ejecuta String.substring(0,2) . Tenga en cuenta que , se ha escapado a \,

Recuerde incluir las comillas necesarias para las cadenas de texto y las variables de JMeter que representan cadenas de texto.
^

__dividir

La función split divide la cadena que se le pasa de acuerdo con el delimitador y devuelve la cadena original. Si hay delimitadores adyacentes, se devuelve " ? " como valor. Las cadenas divididas se devuelven en las variables ${VAR_1} , ${VAR_2} etc. El recuento de variables se devuelve en ${VAR_n} . Un delimitador final se trata como una variable faltante y se devuelve " ? ". Además, para permitir que funcione mejor con el controlador ForEach, __split ahora elimina la primera variable no utilizada en caso de que haya sido establecida por una división anterior.

Ejemplo:
Defina VAR =" a||c| " en el plan de prueba.
${__dividir(${VAR},VAR,|)}

Esto devolverá el contenido de VAR , es decir, " a||c| " y establecerá las siguientes variables:
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 = nulo

Parámetros

Atributo
Descripción
Requerido
Cadena para dividir
Una cadena delimitada, por ejemplo, " a|b|c "
Nombre de variable
Un nombre de referencia para reutilizar el valor calculado por esta función.
delimitador
El carácter delimitador, por ejemplo | . Si se omite, se utiliza . Tenga en cuenta que , debería especificarse como \, .
No
^

__XPath

La función XPath lee un archivo XML y coincide con el XPath. Cada vez que se llama a la función, se devolverá la siguiente coincidencia. Al final del archivo, volverá al principio. Si ningún nodo coincide, la función devolverá la cadena vacía y se escribirá un mensaje de advertencia en el archivo de registro de JMeter.

Tenga en cuenta que toda la lista de nodos se guarda en la memoria.

Ejemplo:
${__XPath(/ruta/hacia/construir.xml, //objetivo/@nombre)}
Esto coincidirá con todos los objetivos en build.xml y devolverá el contenido del siguiente atributo de nombre

Parámetros

Atributo
Descripción
Requerido
Archivo XML para analizar
un archivo XML para analizar
XPath
una expresión XPath para hacer coincidir los nodos en el archivo XML
^

__establecerPropiedad

La función setProperty establece el valor de una propiedad de JMeter. El valor de retorno predeterminado de la función es la cadena vacía, por lo que la llamada a la función se puede usar en cualquier lugar donde las funciones sean válidas.

El valor original se puede devolver configurando el tercer parámetro opcional en " verdadero ".

Las propiedades son globales para JMeter, por lo que se pueden usar para comunicarse entre subprocesos y grupos de subprocesos.

Parámetros

Atributo
Descripción
Requerido
Nombre de la propiedad
El nombre de la propiedad que se va a establecer.
El valor de la propiedad
El valor de la propiedad.
Verdadero Falso
¿Se debe devolver el valor original?
No
^

__tiempo

La función de hora devuelve la hora actual en varios formatos.

Parámetros

Atributo
Descripción
Requerido
Formato
El formato que se va a pasar a SimpleDateFormat . La función admite varios alias abreviados, consulte a continuación. Si se omite, la función devuelve la hora actual en milisegundos desde la época.
No
Nombre de variable
El nombre de la variable a establecer.
No

Si se omite la cadena de formato, la función devuelve la hora actual en milisegundos desde la época. Si el formato coincide con " /ddd " (donde ddd son dígitos decimales), la función devuelve la hora actual en milisegundos dividida por el valor de ddd . Por ejemplo, " /1000 " devuelve el tiempo actual en segundos desde la época. De lo contrario, la hora actual se pasa a SimpleDateFormat. Se proporcionan los siguientes alias abreviados:

  • YMD = aaaaMMdd
  • HMS = HHmmss
  • YMDHMS = aaaaMMdd-HHmmss
  • USUARIO1 = lo que sea que esté en la propiedad JMeter time.USER1
  • USUARIO2 = lo que sea que esté en la propiedad de JMeter time.USER2

Los valores predeterminados se pueden cambiar configurando la propiedad JMeter adecuada, por ejemplo, time.YMD=yyMMdd

${__hora(dd/MM/aaaa,)}
regresará el 21/01/2018 si se ejecutó el 21 de enero de 2018

${__hora(AMD,)}
devolverá 20180121 si se ejecutó el 21 de enero de 2018

${__tiempo()}
devolverá el tiempo en milisegundos 1516540541624

^

__jexl2

La función jexl devuelve el resultado de evaluar una expresión Commons JEXL . Consulte los enlaces a continuación para obtener más información sobre las expresiones JEXL.

La función __jexl2 usa Commons JEXL 2

Parámetros

Atributo
Descripción
Requerido
Expresión
La expresión a evaluar. Por ejemplo, 6*(5+2)
Nombre de variable
El nombre de la variable a establecer.
No

Las siguientes variables están disponibles para el script:

Jexl también puede crear clases y llamar a métodos en ellas, por ejemplo:

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Tenga en cuenta que la documentación de Jexl en el sitio web sugiere erróneamente que " div " realiza la división de enteros. De hecho, " div " y " / " realizan una división normal. Se puede obtener el mismo efecto de la siguiente manera:
i= 5 / 2;
i.intValor(); // o usa i.longValue()

JMeter permite que la expresión contenga múltiples declaraciones.
^

__jexl3

La función jexl devuelve el resultado de evaluar una expresión Commons JEXL . Consulte los enlaces a continuación para obtener más información sobre las expresiones JEXL.

La función __jexl3 usa Commons JEXL 3

Parámetros

Atributo
Descripción
Requerido
Expresión
La expresión a evaluar. Por ejemplo, 6*(5+2)
Nombre de variable
El nombre de la variable a establecer.
No

Las siguientes variables están disponibles para el script:

Jexl también puede crear clases y llamar a métodos en ellas, por ejemplo:

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Tenga en cuenta que la documentación de Jexl en el sitio web sugiere erróneamente que " div " realiza la división de enteros. De hecho, " div " y " / " realizan una división normal. Se puede obtener el mismo efecto de la siguiente manera:
i= 5 / 2;
i.intValor(); // o usa i.longValue()

JMeter permite que la expresión contenga múltiples declaraciones.
^

__V

La función V (variable) devuelve el resultado de evaluar una expresión de nombre de variable. Esto se puede usar para evaluar referencias de variables anidadas (que actualmente no se admiten).

Por ejemplo, si uno tiene las variables A1 , A2 y N = 1 :

  • ${A1} - funciona bien
  • ${A${N}} - no funciona (referencia de variable anidada)
  • ${__V(A${N})} - funciona bien. A${N} se convierte en A1 y la función __V devuelve el valor de A1

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
La variable a evaluar.
Valor por defecto
El valor predeterminado en caso de que no se encuentre ninguna variable, si está vacío y no se encuentra ninguna variable, la función devuelve el nombre de la variable
No
^

__evalVar

La función evalVar devuelve el resultado de evaluar una expresión almacenada en una variable.

Esto permite leer una cadena de un archivo y procesar cualquier referencia de variable en él. Por ejemplo, si la variable " consulta " contiene " seleccione ${columna} de ${tabla} " y " columna " y " tabla " contienen " nombre " y " clientes ", entonces ${__evalVar(consulta)} se evaluará como " seleccione el nombre de los clientes ".

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
La variable a evaluar.
^

__evaluar

La función eval devuelve el resultado de evaluar una expresión de cadena.

Esto permite interpolar referencias de variables y funciones en una cadena que se almacena en una variable. Por ejemplo, dadas las siguientes variables:

  • nombre = Smith
  • columna = edad
  • mesa = cumpleaños
  • SQL = seleccione ${columna} de ${tabla} donde nombre='${nombre}'
entonces ${__eval(${SQL})} se evaluará como " seleccionar la edad de los cumpleaños donde nombre = 'Smith' ".

Esto se puede usar junto con CSV Dataset, por ejemplo, donde tanto las declaraciones SQL como los valores se definen en el archivo de datos.

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
La variable a evaluar.
^

__char

La función char devuelve el resultado de evaluar una lista de números como caracteres Unicode. Consulte también __unescape() , a continuación.

Esto permite agregar valores de caracteres arbitrarios en los campos.

Parámetros

Atributo
Descripción
Requerido
Número de carácter Unicode (decimal o 0xhex)
El número decimal (o número hexadecimal, si tiene el prefijo 0x , u octal, si tiene el prefijo 0 ) que se convertirá en un carácter Unicode.

Ejemplos:
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = ¥ (yen)

^

__unescape

La función unescape devuelve el resultado de evaluar una cadena escapada de Java. Ver también __char() arriba.

Esto permite agregar caracteres a campos que de otro modo serían complicados (o imposibles) de definir a través de la GUI.

Parámetros

Atributo
Descripción
Requerido
Cadena para no escapar
La cadena que no debe escaparse.

Ejemplos:
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1 [tabulador] 2

^

__unescapeHtml

Función para quitar el escape de una cadena que contiene escapes de entidades HTML a una cadena que contiene los caracteres Unicode reales correspondientes a los escapes. Admite entidades HTML 4.0.

Por ejemplo, la cadena

${__unescapeHtml(<Français>)}
devolverá <Français> .

Si no se reconoce una entidad, se deja sola y se inserta textualmente en la cadena de resultados. por ejemplo , ${__unescapeHtml(>&zzzz;x)} devolverá >&zzzz;x .

Utiliza StringEscapeUtils#unescapeHtml(String) de Commons Lang.

Parámetros

Atributo
Descripción
Requerido
Cadena para no escapar
La cadena que no debe escaparse.
^

__escapeHtml¶ _

Función que escapa los caracteres en una cadena usando entidades HTML. Admite entidades HTML 4.0.

Por ejemplo,

${__escapeHtml("pan" y "mantequilla")}
retorno: "pan" &erio; "mantequilla" .

Utiliza StringEscapeUtils#escapeHtml(String) de Commons Lang.

Parámetros

Atributo
Descripción
Requerido
Cuerda para escapar
La cadena a ser escapada.
^

__urldecode

Función para decodificar una cadena application/x-www-form-urlencoded . Nota: utilice UTF-8 como esquema de codificación.

Por ejemplo, la cadena

${__urldecode(Palabra+%22escuela%22+es+%22%C3%A9cole%22+en+francés)}
regresa La palabra "escuela" es "école" en francés .

Utiliza la clase Java URLDecoder .

Parámetros

Atributo
Descripción
Requerido
Cadena para decodificar
La cadena con caracteres codificados en URL para decodificar.
^

__urlencode

Función para codificar una cadena en una cadena application/x-www-form-urlencoded .

Por ejemplo, la cadena

${__urlencode(La palabra "escuela" es "école" en francés)}
devuelve Word+%22school%22+is+%22%C3%A9cole%22+en+francés .

Utiliza URLEncoder de clase Java .

Parámetros

Atributo
Descripción
Requerido
Cadena para codificar
Cadena para codificar en caracteres codificados de URL.
^

__FileToString

La función FileToString se puede utilizar para leer un archivo completo. Cada vez que se llama, lee todo el archivo.

Si se produce un error al abrir o leer el archivo, la función devuelve la cadena " **ERR** "

Parámetros

Atributo
Descripción
Requerido
Nombre del archivo
Ruta al nombre del archivo. (La ruta puede ser relativa al directorio de inicio de JMeter)
Codificación de archivos si no es el valor predeterminado de la plataforma
La codificación que se utilizará para leer el archivo. Si no se especifica, se utiliza el valor predeterminado de la plataforma.
No
Nombre de la variable
Un nombre de referencia, refName , para reutilizar el valor creado por esta función. Los valores almacenados tienen la forma ${refName} .
No

Los parámetros de nombre de archivo, codificación y nombre de referencia se resuelven cada vez que se ejecuta la función.

^

__nombre de muestra

La función samplerName devuelve el nombre (es decir, la etiqueta) de la muestra actual.

La función no funciona en elementos Test que no tengan un sampler asociado. Por ejemplo el Plan de Pruebas. Los elementos de configuración tampoco tienen una muestra asociada. Sin embargo, los muestreadores hacen referencia directamente a algunos elementos de configuración, como el administrador de encabezado HTTP y el administrador de cookies Http, y en este caso las funciones se resuelven en el contexto del muestreador Http. Los Pre-Procesadores, Post-Procesadores y Aserciones siempre tienen un Sampler asociado.

Ejemplo:

${__nombre de muestra()}

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
Un nombre de referencia, refName , para reutilizar el valor creado por esta función. Los valores almacenados tienen la forma ${refName} .
No
^

__NombrePlanDePrueba

La función TestPlanName devuelve el nombre del plan de prueba actual (se puede usar en Incluir planes para conocer el nombre del plan de prueba que realiza la llamada).

Ejemplo:

${__Nombre del plan de prueba}
devolverá el nombre de archivo de su plan de prueba, por ejemplo, si el plan está en un archivo llamado Demo.jmx, devolverá " Demo.jmx

^

__escapeOroRegexpChars

Función que escapa de los metacaracteres ORO Regexp, es el equivalente de \Q \E en Java Regexp Engine.

Por ejemplo,

${__escapeOroRegexpChars([^"].+?,)}
devuelve: \[\^\"\]\.\+\? .

Utiliza Perl5Compiler#quotemeta(String) de ORO.

Parámetros

Atributo
Descripción
Requerido
Cuerda para escapar
La cadena a ser escapada.
Nombre de la variable
Un nombre de referencia, refName , para reutilizar el valor creado por esta función. Los valores almacenados tienen la forma ${refName} .
No
^

__escapeXml¶ _

Función que escapa los caracteres en una cadena usando entidades XML 1.0.

Por ejemplo,

${__escapeXml("pan" y 'mantequilla')}
devuelve: "pan" &erio; 'mantequilla' .

Utiliza StringEscapeUtils#escapeXml10(String) de Commons Lang.

Parámetros

Atributo
Descripción
Requerido
Cuerda para escapar
La cadena a ser escapada.
^

__cambio de tiempo

La función timeShift devuelve una fecha en el formato dado con la cantidad especificada de segundos, minutos, horas, días o meses agregados

Parámetros

Atributo
Descripción
Requerido
Formato
El formato que se va a pasar a DateTimeFormatter. Ver DateTimeFormatter Si se omite, la función usa milisegundos desde el formato de época.
No
Fecha para cambiar
Indique la fecha en el formato establecido por el parámetro 'Formato' para cambiar Si se omite, la fecha se establece en ahora
No
valor para cambiar
Indique la cantidad especificada de segundos, minutos, horas o días para cambiar según una representación textual de una duración como PnDTnHnMn.nS. Consulte https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
  • PT20.345S analiza como 20.345 segundos
  • PT15M analiza como 15 minutos
  • PT10H analiza como 10 horas
  • P2D analiza como 2 días
  • -P6H3M analiza como -6 horas y -3 minutos
No
Configuración regional a utilizar para el formato
El formato de cadena de una configuración regional. El código de idioma debe estar en minúsculas. El código del país debe estar en mayúsculas. El separador debe ser un guión bajo. ej.: en_EN Consulte http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html Si se omite, la función utiliza de forma predeterminada la configuración regional de ApacheJMeter.
No
Nombre de variable
El nombre de la variable a establecer.
No

Ejemplos:

${__timeShift(dd/MM/aaaa,21/01/2018,P2D,,)}
vuelve 23/01/2018
${__timeShift(dd MMMM aaaa,21 de febrero de 2018,P2D,fr_FR,)}
regresa el 23 de febrero de 2018

^

__resumen

La función de resumen devuelve un valor encriptado en el algoritmo hash específico con sal opcional, mayúsculas y nombre de variable.

Parámetros

Atributo
Descripción
Requerido
Algoritmo
El algoritmo que se usará para cifrar Para posibles algoritmos, consulte MessageDigest en StandardNames
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
Los espacios se tienen en cuenta para que Salt agregue y String codifique
Cadena para codificar
La cadena que se cifrará
Sal para agregar
Sal para agregar a la cuerda (después de ella)
No
Valor en mayúsculas
El resultado estará en minúsculas por defecto. Elija resultados verdaderos a mayúsculas.
No
Nombre de variable
El nombre de la variable a establecer.
No

Ejemplos:

${__digest(MD5,Errare humanum est,,,)}
devuelve c49f00b92667a35c63708933384dad52
${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}
devuelve a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7

^

__dateTimeConvert

La función __dateTimeConvert convierte una fecha que está en formato de origen a un formato de destino y almacena el resultado opcionalmente en el nombre de la variable.

Parámetros

Atributo
Descripción
Requerido
Cadena de fecha
La cadena de fecha para convertir del formato de fecha de origen al formato de fecha de destino. Una fecha como una época podría usarse aquí si el formato de fecha de origen está vacío.
Formato de fecha de origen
El formato de fecha original. Si está vacío, el campo Cadena de fecha debe ser una época.
No
Formato de fecha objetivo
El nuevo formato de fecha
Nombre de variable
El nombre de la variable a establecer.
No

Ejemplo:

${__dateTimeConvert(01212018,MMddaaaa,dd/MM/aaaa,)}
vuelve 21/01/2018

Con valor de tiempo de época: 1526574881000,

${__dateTimeConvert(1526574881000,,dd/MM/aaaa HH:mm,)}
devuelve el 17/05/2018 16:34 en hora UTC (-Duser.timezone=GMT)

^

__isPropDefined¶ _

La función __isPropDefined devuelve verdadero si la propiedad existe o falso en caso contrario.

Parámetros

Atributo
Descripción
Requerido
Nombre de la propiedad
El nombre de la propiedad que se usará para verificar si está definido

Ejemplo:

${__isPropDefined(INICIO.HMS)}
volverá verdadero

^

__isVarDefinido

La función __isVarDefined devuelve verdadero si la variable existe o falso en caso contrario.

Parámetros

Atributo
Descripción
Requerido
Nombre de la variable
El nombre de la variable que se usará para verificar si está definido

Ejemplo:

${__esVarDefined(JMeterThread.last_sample_ok)}
volverá verdadero

^

__cambiarCaso

La función de cambio de caso devuelve un valor de cadena cuyo caso se ha cambiado siguiendo un modo específico. El resultado se puede guardar opcionalmente en una variable JMeter.

Parámetros

Atributo
Descripción
Requerido
Cadena para cambiar mayúsculas y minúsculas
La cadena cuyo caso se cambiará
cambiar el modo de caso
El modo que se utilizará para cambiar de mayúsculas y minúsculas, por ejemplo para ab-CD eF :
  • Resultado SUPERIOR como AB-CD EF
  • resultado INFERIOR como ab-cd ed
  • MAYÚSCULAS resultado como Ab-CD eF
cambiar el modo de mayúsculas y minúsculas no distingue entre mayúsculas y minúsculas
Nombre de variable
El nombre de la variable a establecer.
No

Ejemplos:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
regresarán AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL
${__cambiarCaso(LABOR OMNIA VINCIT IMPROBUS,INFERIOR,)}
volverá labor omnia vincit improbus
${__changeCase(ómnibus viis romam pervenitur,MAYÚSCULAS,)}
volverá Omnibus viis romam pervenitur

^

__StringToFile

La función __StringToFile se puede usar para escribir una cadena en un archivo. Cada vez que se llama, escribe una cadena para agregar o sobrescribir el archivo.

El valor de retorno predeterminado de la función es la cadena vacía

Parámetros

Atributo
Descripción
Requerido
Ruta al archivo
Ruta al nombre del archivo. (La ruta es absoluta)
Cadena para escribir
La cadena para escribir en el archivo.
Si necesita insertar un salto de línea en su contenido, use \n en su cadena.
¿Anexar al archivo?
La forma de escribir la cadena, verdadero significa agregar, falso significa sobrescribir. Si no se especifica, el anexo predeterminado es true .
No
Codificación de archivos si no es UTF-8
La codificación que se utilizará para escribir en el archivo. Si no se especifica, la codificación predeterminada es UTF-8 .
No
^

20.6 Variables predefinidas

La mayoría de las variables se establecen llamando a funciones o mediante elementos de prueba como Variables definidas por el usuario; en cuyo caso el usuario tiene control total sobre el nombre de la variable que se utiliza. Sin embargo, algunas variables están definidas internamente por JMeter. Estos se enumeran a continuación.

  • COOKIE_cookiename : contiene el valor de la cookie (ver Administrador de cookies HTTP )
  • JMeterThread.last_sample_ok : si la última muestra estuvo bien o no: verdadero / falso . Nota: esto se actualiza después de que se hayan ejecutado PostProcessors y Assertions.
  • Variables de INICIO (ver la siguiente sección)

20.6 Propiedades predefinidas

El conjunto de propiedades de JMeter se inicializa a partir de las propiedades del sistema definidas cuando se inicia JMeter; Las propiedades adicionales de JMeter se definen en jmeter.properties , user.properties o en la línea de comando.

Algunas propiedades integradas están definidas por JMeter. Estos se enumeran a continuación. Por comodidad, las propiedades de INICIO también se copian en variables con los mismos nombres.

  • START.MS - Hora de inicio de JMeter en milisegundos
  • START.YMD - Hora de inicio de JMeter como aaaaMMdd
  • START.HMS - Hora de inicio de JMeter como HHmmss
  • TESTSTART.MS - hora de inicio de la prueba en milisegundos

Tenga en cuenta que las variables/propiedades de INICIO representan el tiempo de inicio de JMeter, no el tiempo de inicio de la prueba. Están destinados principalmente para su uso en nombres de archivos, etc.

Go to top