En las expresiones parametrizadas de PTS, puede combinar funciones del sistema con cadenas u otras funciones al colocarlas una junto a la otra. No se requiere ningún operador de concatenación. Todas las expresiones comienzan con =.
Referencia rápida
|
Patrón |
Sintaxis |
Ejemplo de salida |
|
Cadena + función |
|
|
|
Función + función |
|
|
|
Funciones anidadas |
|
|
Concatenar cadenas y funciones
Coloque una cadena y una función del sistema, o dos funciones del sistema, una junto a la otra. No se requiere ningún separador.
Cadena antes de una función
=abc${sys.random(1,20)}
Si sys.random(1,20) devuelve 5, esto produce abc5.
Dos funciones juntas
=${sys.random(1,20)}${sys.select("a","b","c")}
Si sys.random(1,20) devuelve 12 y sys.select("a","b","c") devuelve b, esto produce 12b.
Escapar comillas en los parámetros
Las comillas simples (') dentro de los parámetros de función no necesitan escaparse. Las comillas dobles (") deben escaparse al duplicarlas ("").
Comillas simples
Utilice las comillas simples directamente:
=${sys.md5("leo say 'hi'")}
Esto calcula el hash MD5 de la cadena leo say 'hi'.
Comillas dobles
Escape cada " escribiendo "":
=${sys.md5("leo say ""hi""")}
Esto calcula el hash MD5 de la cadena leo say "hi".
Cómo funciona el escape: el par exterior de " delimita el parámetro. Cada "" en el interior genera un carácter literal ". En el ejemplo anterior, ""hi"" se resuelve como "hi".
Si omite las comillas duplicadas, PTS las interpreta como delimitadores de parámetro. Esto provoca resultados de análisis sintáctico inesperados o errores.
Uso de comillas en funciones anidadas
Cuando pasa una función del sistema como parámetro a otra función, las comillas dobles (") alrededor de la función interna no siempre son obligatorias. La necesidad de usar comillas depende de cómo se construya el parámetro interno:
|
Escenario |
¿Se requieren comillas? |
Razón |
|
El parámetro interno es una sola llamada de función |
No |
PTS resuelve la referencia de la función directamente |
|
El parámetro interno implica concatenación de cadenas |
Sí |
La cadena concatenada debe encerrarse entre |
|
El parámetro interno hace referencia a un parámetro de archivo |
Sí |
Los valores de los parámetros de archivo se tratan como cadenas |
|
El parámetro interno es una cadena JSON con variables |
Sí |
La estructura JSON requiere delimitadores de cadena |
Función única como parámetro (sin comillas)
Cuando el parámetro interno es una llamada de función independiente, omita las comillas dobles:
=${sys.substring(${sys.md5("${input1}${input2}")},2,5)}
La función externa sys.substring recibe directamente el resultado de sys.md5(...), por lo que no se necesitan comillas alrededor de ${sys.md5(...)}. Dentro de sys.md5, las dos entradas se concatenan (${input1}${input2}), así que dicha concatenación se encierra entre ".
Orden de evaluación:
${input1}y${input2}se resuelven a sus valores (por ejemplo,helloyworld).sys.md5("helloworld")calcula el hash MD5.sys.substring(<md5-result>, 2, 5)extrae una subcadena que comienza en la posición 2 hasta la posición 5.
Concatenación de cadenas como parámetro (comillas obligatorias)
Cuando el parámetro de la función es una cadena construida mediante concatenación, enciérrela entre ":
=${sys.substring("abc${sys.random(1,20)}", 0, 1)}
El parámetro "abc${sys.random(1,20)}" concatena la cadena abc con la salida de sys.random(1,20). Dado que se trata de una cadena concatenada, debe encerrarse entre ". El resultado siempre es a (el primer carácter de la cadena concatenada).
Parámetro de archivo como entrada (comillas obligatorias)
Cuando un parámetro de función proviene de un archivo de datos, enciérrelo entre ":
=${sys.base64("${num2}")}
${num2} es un parámetro de archivo cargado desde un archivo de datos durante la ejecución. Los parámetros de archivo dentro de las funciones deben encerrarse entre ".
Cadena JSON con variables (comillas obligatorias)
Cuando construye una cadena JSON que hace referencia a parámetros de archivo, encierre el JSON entre " y escape las comillas dobles internas al duplicarlas:
=${sys.select("{""username"":""${username}""}","blue","green")}
Esta llamada a sys.select selecciona entre tres opciones:
{"username":"<value-of-username>"}-- un objeto JSON con el parámetro de archivousernamebluegreen
Cada "" dentro de la expresión representa un carácter literal " en la cadena JSON.