20. Funções e Variáveis ​​¶

As funções JMeter são valores especiais que podem preencher campos de qualquer Sampler ou outro elemento em uma árvore de teste. Uma chamada de função se parece com isso:

${__functionName(var1,var2,var3)}

Onde "__functionName" corresponde ao nome de uma função.
Os parênteses cercam os parâmetros enviados para a função, por exemplo ${__time(YMD)} Os parâmetros reais variam de função para função. Funções que não requerem parâmetros podem deixar os parênteses, por exemplo ${__threadNum} .

Se um parâmetro de função contiver uma vírgula, certifique-se de escapar disso com " \ ", caso contrário, o JMeter o tratará como um delimitador de parâmetro. Por exemplo:

${__time(EEE\, d MMM aaaa)}
Se a vírgula não for escapada - por exemplo, ${__javaScript(Math.max(2,5))} - você receberá um erro como:
ERRO - jmeter.functions.JavaScript: Erro ao processar Javascript: [Math.max(2]
    org.mozilla.javascript.EvaluatorException: faltando ) após a lista de argumentos (<cmd>#1)
 
Isso ocorre porque a string " Math.max(2,5) " é tratada como sendo dois parâmetros para a função __javascript:
Math.max(2 e 5)
Outras mensagens de erro são possíveis.

As variáveis ​​são referenciadas da seguinte forma:

${VARIÁVEL}

Se uma função ou variável indefinida for referenciada, o JMeter não relata/registra um erro - a referência é retornada inalterada. Por exemplo, se UNDEF não estiver definido como uma variável, o valor de ${UNDEF} será ${UNDEF} . Variáveis, funções (e propriedades) fazem distinção entre maiúsculas e minúsculas. O JMeter apara os espaços dos nomes das variáveis ​​antes de usar, então, por exemplo, ${__Random(1,63, LOTTERY )} usará a variável ' LOTTERY ' em vez de '  LOTTERY  '.

Propriedades não são o mesmo que variáveis. As variáveis ​​são locais para um encadeamento; As propriedades são comuns a todos os encadeamentos e precisam ser referenciadas usando a função __P ou __property .
Ao usar \ antes de uma variável para um caminho do Windows, por exemplo C:\test\${test} , certifique-se de escapar do \ caso contrário o JMeter não interpretará a variável, exemplo: C:\\test\\${test} .
Como alternativa, use / em vez do separador de caminho - por exemplo, C:/test/${test} - as JVMs do Windows converterão os separadores conforme necessário.

Lista de funções, agrupadas vagamente em tipos.

Tipo de funçãoNomeComenteDesde
Em formação threadNumobter o número da linha1.X
Em formação threadGroupNameobter o nome do grupo de threads4.1
Em formação samplerNameobter o nome do amostrador (rótulo)2,5
Em formação IP da máquinaobter o endereço IP da máquina local2.6
Em formação nome da maquinaobter o nome da máquina local1.X
Em formação Temporetornar a hora atual em vários formatos2.2
Em formação Mudança de horárioretornar uma data em vários formatos com a quantidade especificada de segundos/minutos/horas/dias adicionados3.3
Em formação registroregistrar (ou exibir) uma mensagem (e retornar o valor)2.2
Em formação logarregistrar (ou exibir) uma mensagem (valor de retorno vazio)2.2
Entrada StringFromFileler uma linha de um arquivo1,9
Entrada FileToStringler um arquivo inteiro2.4
Entrada CSVReadler do arquivo delimitado por CSV1,9
Entrada XPathUse uma expressão XPath para ler de um arquivo2.0.3
Entrada StringToFileescrever uma string em um arquivo5.2
Cálculo contadorgerar um número incrementado1.X
Formatação DateTimeConvertConverter uma data ou hora do formato de origem para o formato de destino4,0
Cálculo digerirGerar um resumo (SHA-1, SHA-256, MD5...)4,0
Cálculo intSomaadicionar números inteiros1.8.1
Cálculo LongSomaadicionar números longos2.3.2
Cálculo Aleatóriogerar um número aleatório1,9
Cálculo RandomDategerar data aleatória dentro de um intervalo de datas específico3.3
Cálculo RandomFromMultipleVarsextrai um elemento dos valores de um conjunto de variáveis ​​separadas por |3.1
Cálculo RandomStringgerar uma string aleatória2.6
Cálculo UUIDgerar um UUID tipo 4 aleatório2.9
Script groovyexecute um script Apache Groovy3.1
Script BeanShellexecutar um script BeanShell1.X
Script JavaScriptprocessar JavaScript (Nashorn)1,9
Script jexl2avaliar uma expressão Commons Jexl2jexl2(2.1.1)
Script jexl3avaliar uma expressão Commons Jexl3jexl3 (3.0)
Propriedades isPropDefined Testar se existe uma propriedade4,0
Propriedades propriedade ler uma propriedade2,0
Propriedades Pler uma propriedade (método abreviado)2,0
Propriedades setPropertydefinir uma propriedade JMeter2.1
Variáveis dividirDividir uma string em variáveis2.0.2
Variáveis avaliaçãoavaliar uma expressão variável2.3.1
Variáveis evalVaravaliar uma expressão armazenada em uma variável2.3.1
Propriedades isVarDefined Testar se existe uma variável4,0
Variáveis Vavaliar um nome de variável2.3RC3
Corda Caracteresgerar valores de caracteres Unicode a partir de uma lista de números2.3.3
Corda changeCaseAlterar caso seguindo diferentes modos4,0
Corda escapeHtmlCodifique strings usando codificação HTML2.3.3
Corda escapeOroRegexpCharsaspas meta caracteres usados ​​pela expressão regular ORO2.9
Corda escapeXmlCodifique strings usando codificação XML3.2
Corda Função regexanalisar a resposta anterior usando uma expressão regular1.X
Corda não escaparStrings de processo contendo escapes Java (por exemplo, \n & \t)2.3.3
Corda unescapeHtmlDecodificar strings codificadas em HTML2.3.3
Corda urldecodeDecodificar uma string application/x-www-form-urlencoded2.10
Corda código de URLCodifique uma string para uma string application/x-www-form-urlencoded2.10
Corda Nome do Plano de TesteRetornar o nome do plano de teste atual2.6

20.1 O que as funções podem fazer

Existem dois tipos de funções: valores estáticos definidos pelo usuário (ou variáveis) e funções internas.
Os valores estáticos definidos pelo usuário permitem que o usuário defina as variáveis ​​a serem substituídas pelo seu valor estático quando uma árvore de teste é compilada e enviada para execução. Essa substituição ocorre uma vez no início da execução de teste. Isso pode ser usado para substituir o campo DOMAIN de todas as solicitações HTTP, por exemplo - tornando simples alterar um teste para direcionar um servidor diferente com o mesmo teste.

Observe que as variáveis ​​não podem ser aninhadas no momento; ou seja, ${Var${N}} não funciona. A função __V (variável) pode ser usada para fazer isso: ${__V(Var${N})} . Você também pode usar ${__BeanShell(vars.get("Var${N}")} .

Este tipo de substituição é possível sem funções, mas foi menos conveniente e menos intuitivo. Ele exigia que os usuários criassem elementos de configuração padrão que preencheriam os valores em branco dos Samplers. As variáveis ​​permitem substituir apenas parte de um determinado valor, não apenas preencher valores em branco.

Com funções integradas, os usuários podem calcular novos valores em tempo de execução com base nos dados de resposta anteriores, em qual encadeamento a função está, a hora e muitas outras fontes. Esses valores são gerados atualizados para cada solicitação ao longo do teste.

As funções são compartilhadas entre threads. Cada ocorrência de uma chamada de função em um plano de teste é tratada por uma instância de função separada.

20.2 Onde as funções e variáveis ​​podem ser usadas?

Funções e variáveis ​​podem ser escritas em qualquer campo de qualquer componente de teste (além do TestPlan - veja abaixo). Alguns campos não permitem strings aleatórias porque estão esperando números e, portanto, não aceitarão uma função. No entanto, a maioria dos campos permitirá funções.

As funções usadas no Plano de Teste têm algumas restrições. As variáveis ​​de thread do JMeter não serão totalmente configuradas quando as funções forem processadas, portanto, os nomes de variáveis ​​passados ​​como parâmetros não serão configurados e as referências de variáveis ​​não funcionarão, então split() e regex() e as funções de avaliação de variáveis ​​não não funciona. A função threadNum() não funcionará (e não faz sentido no nível do plano de teste). As seguintes funções devem funcionar bem no plano de teste:

  • intSoma
  • LongSoma
  • nome da maquina
  • BeanShell
  • groovy
  • JavaScript
  • jexl2/jexl3
  • aleatória
  • Tempo
  • funções de propriedade
  • funções de registro

Os elementos de configuração são processados ​​por um thread separado. Portanto, funções como __threadNum não funcionam corretamente em elementos como variáveis ​​definidas pelo usuário. Observe também que as variáveis ​​definidas em um elemento UDV não estão disponíveis até que o elemento seja processado.

Ao usar referências de variável/função no código SQL (etc.), lembre-se de incluir as aspas necessárias para strings de texto, ou seja, use
SELECT item da tabela onde name='${VAR}'
não
SELECT item da tabela onde nome=${VAR}
(a menos que o próprio VAR contenha as aspas)

20.3 Como referenciar variáveis ​​e funções

A referência de uma variável em um elemento de teste é feita colocando o nome da variável entre colchetes com ' ${ ' e ' } '.

As funções são referenciadas da mesma maneira, mas por convenção, os nomes das funções começam com " __ " para evitar conflito com nomes de valores de usuário * . Algumas funções recebem argumentos para configurá-las, e estes vão entre parênteses, delimitados por vírgulas. Se a função não receber argumentos, os parênteses podem ser omitidos.

Os valores de argumento que contêm vírgulas devem ser escapados conforme necessário. Se você precisar incluir uma vírgula no valor do seu parâmetro, escape-o assim: ' \, '. Isso se aplica, por exemplo, às funções de script - Javascript, Beanshell, Jexl, groovy - onde é necessário escapar de quaisquer vírgulas que possam ser necessárias em chamadas de métodos de script - por exemplo

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

Alternativamente, você pode definir seu script como uma variável, por exemplo, no Plano de Teste:

SCRIPT vars.put("nome","valor")
O script pode ser referenciado da seguinte forma:
${__BeanShell(${SCRIPT})}
Não há necessidade de escapar vírgulas na variável SCRIPT porque a chamada da função é analisada antes que a variável seja substituída por seu valor. Isso funciona bem em conjunto com os Samplers JSR223 ou BeanShell, pois eles podem ser usados ​​para testar scripts Javascript, Jexl e BeanShell.

As funções podem referenciar variáveis ​​e outras funções, por exemplo ${__XPath(${__P(xpath.file),${XPATH})} usará a propriedade " xpath.file " como o nome do arquivo e o conteúdo da variável XPATH como a expressão a ser pesquisada.

O JMeter fornece uma ferramenta para ajudá-lo a construir chamadas de função para várias funções internas, que você pode copiar e colar. Ele não escapará automaticamente dos valores para você, pois as funções podem ser parâmetros para outras funções, e você deve apenas escapar dos valores que pretende como literais.

Se uma string contiver uma barra invertida(' \ ') e também contiver uma referência de função ou variável, a barra invertida será removida se aparecer antes de ' $ ' ou ' , ' ou ' \ '. Esse comportamento é necessário para permitir funções aninhadas que incluem vírgulas ou a string ${ . As barras invertidas antes de ' $ ' ou ' , ' ou ' \ ' não são removidas se a string não contiver uma referência de função ou variável.

O valor de uma variável ou função pode ser informado usando a função __logn() . A referência da função __logn() pode ser usada em qualquer lugar no plano de teste após a definição da variável. Como alternativa, o amostrador Java Request pode ser usado para criar uma amostra contendo referências de variáveis; a saída será mostrada no Listener apropriado. Observe que há um Debug Sampler que pode ser usado para exibir os valores de variáveis ​​etc. no Tree View Listener.

* Se você definir uma variável estática definida pelo usuário com o mesmo nome de uma função interna, sua variável estática substituirá a função interna.

20.4 A Caixa de Diálogo do Auxiliar de Função

A caixa de diálogo Function Helper está disponível no menu Tools do JMeter.

Caixa de diálogo auxiliar de função
Caixa de diálogo auxiliar de função

Usando o Function Helper, você pode selecionar uma função no menu suspenso e atribuir valores para seus argumentos. A coluna da esquerda na tabela fornece uma breve descrição do argumento e a coluna da direita é onde você escreve o valor desse argumento. Funções diferentes recebem argumentos diferentes.

Depois de fazer isso, clique no botão "gerar" e a string apropriada será gerada para você copiar e colar em seu plano de teste onde quiser.

20.5 Funções

__regexFunction¶ _

A função Regex é usada para analisar a resposta anterior (ou o valor de uma variável) usando qualquer expressão regular (fornecida pelo usuário). A função retorna a string do modelo com os valores das variáveis ​​preenchidos.

O __regexFunction também pode armazenar valores para uso futuro. No sexto parâmetro, você pode especificar um nome de referência. Depois que essa função for executada, os mesmos valores poderão ser recuperados posteriormente usando a sintaxe para valores definidos pelo usuário. Por exemplo, se você inserir " refName " como o sexto parâmetro, poderá usar:

  • ${refName} para se referir ao resultado calculado do segundo parâmetro ("Modelo para a string de substituição") analisado por esta função
  • ${refName_g0} para se referir a toda a correspondência analisada por esta função.
  • ${refName_g1} para se referir ao primeiro grupo analisado por esta função.
  • ${refName_g#} para se referir ao enésimo grupo analisado por esta função.
  • ${refName_matchNr} para se referir ao número de grupos encontrados por esta função.
Se estiver usando testes distribuídos, certifique-se de alternar o modo (consulte jmeter.properties ) para que não seja um de remoção, consulte o Bug 56376

Parâmetros

Atributo
Descrição
Requeridos
Primeiro argumento
O primeiro argumento é a expressão regular a ser aplicada aos dados de resposta. Ele vai pegar todas as partidas. Quaisquer partes desta expressão que você deseja usar em sua string de modelo, certifique-se de colocar entre parênteses. Exemplo: <a href="(.*)"> . Isso pegará o valor do link e o armazenará como o primeiro grupo (há apenas 1 grupo). Outro exemplo: <input type="hidden" name="(.*)" value="(.*)"> . Isso pegará o nome como o primeiro grupo e o valor como o segundo grupo. Esses valores podem ser usados ​​em sua string de modelo
Sim
Segundo argumento
Esta é a string de modelo que substituirá a função em tempo de execução. Para fazer referência a um grupo capturado na expressão regular, use a sintaxe: $[group_number]$ . Ou seja: $1$ ou $2$ . Seu modelo pode ser qualquer string.
Sim
Terceiro argumento
O terceiro argumento informa ao JMeter qual correspondência usar. Sua expressão regular pode encontrar várias correspondências. Você tem quatro opções:
  • Um inteiro - Diz ao JMeter para usar essa correspondência. ' 1 ' para a primeira correspondência encontrada, ' 2 ' para a segunda e assim por diante
  • RAND - Diz ao JMeter para escolher uma correspondência aleatoriamente.
  • ALL - Diz ao JMeter para usar todas as correspondências e criar uma string de modelo para cada uma e depois anexá-las todas. Esta opção é pouco utilizada.
  • Um número flutuante entre 0 e 1 - diz ao JMeter para encontrar a X a correspondência usando a fórmula: (number_of_matches_found * float_number ) arredondado para o inteiro mais próximo.
Não, padrão=1
Quarto argumento
Se ' ALL ' foi selecionado para o valor do argumento acima, então este argumento será inserido entre cada cópia anexada do valor do modelo.
Não
Quinto argumento
Valor padrão retornado se nenhuma correspondência for encontrada
Não
Sexto argumento
Um nome de referência para reutilizar os valores analisados ​​por esta função.
Os valores armazenados são ${refName} (a ​​string do modelo de substituição) e ${refName_g#} onde " # " é o número do grupo da expressão regular (" 0 " pode ser usado para se referir a toda a correspondência).
Não
Sétimo argumento
Nome da variável de entrada. Se especificado, o valor da variável é usado como entrada em vez de usar o resultado da amostra anterior.
Não
^

__contador¶ _

O contador gera um novo número cada vez que é chamado, começando com 1 e incrementando em +1 a cada vez. O contador pode ser configurado para manter os valores de cada usuário simulado separados ou para usar o mesmo contador para todos os usuários. Se os valores de cada usuário forem incrementados separadamente, é como contar o número de iterações por meio do plano de teste. Um contador global é como contar quantas vezes esse pedido foi executado.

O contador usa uma variável inteira para manter a contagem, que, portanto, tem um máximo de 2.147.483.647.

As instâncias da função de contador são completamente independentes. O contador global - " FALSE " - é mantido separadamente por cada instância do contador.

Várias chamadas de função __counter na mesma iteração não incrementarão ainda mais o valor.
Se você quiser ter uma contagem que aumenta para cada amostra, use a função em um pré-processador, como User Parameters .

Parâmetros

Atributo
Descrição
Requeridos
Primeiro argumento
TRUE se você deseja que o contador de cada usuário simulado seja mantido independente e separado dos outros usuários. FALSE para um contador global.
Sim
Segundo argumento
Um nome de referência para reutilizar o valor criado por esta função.
Os valores armazenados estão no formato ${refName} . Isso permite que você mantenha um contador e consulte seu valor em vários lugares.
Não
^

__threadNum

A função de número de encadeamento simplesmente retorna o número do encadeamento que está sendo executado no momento. Esses números são apenas localmente únicos em relação ao seu ThreadGroup, o que significa que o thread #1 em um threadgroup é indistinguível do thread #1 em outro threadgroup, do ponto de vista desta função.

A função retorna um número entre um e o número máximo de threads em execução. Observe que, se você estiver usando o código JSR223 com o objeto JMeterContext ( variável ctx ), o código abaixo retornará um número entre zero e (número máximo de threads em execução menos um)
ctx.getThreadNum()

Não há argumentos para esta função.

Exemplo de uso:

${__threadNum}
retorna um número entre 1 e o número máximo de threads em execução configurados no grupo de threads que o contém

Esta função não funciona em nenhum elemento de configuração (por exemplo, Variáveis ​​Definidas pelo Usuário), pois elas são executadas a partir de um encadeamento separado. Nem faz sentido usá-lo no Plano de Teste.
^

__threadGroupName

A função de nome do grupo de threads simplesmente retorna o nome do grupo de threads que está sendo executado.

Não há argumentos para esta função.

Exemplo de uso:

${__threadGroupName}

Esta função não funciona em nenhum elemento de configuração (por exemplo, Variáveis ​​Definidas pelo Usuário), pois elas são executadas a partir de um encadeamento separado. Nem faz sentido usá-lo no Plano de Teste.
^

__intSoma¶ _

A função intSum pode ser usada para calcular a soma de dois ou mais valores inteiros.

O nome de referência é opcional, mas não deve ser um número inteiro válido.

Parâmetros

Atributo
Descrição
Requeridos
Primeiro argumento
O primeiro valor int.
Sim
Segundo argumento
O segundo valor int.
Sim
enésimo argumento
O enésimo valor int.
Não
último argumento
Um nome de referência para reutilizar o valor calculado por esta função. Se especificado, o nome de referência deve conter pelo menos um caractere não numérico, caso contrário será tratado como outro valor int a ser adicionado.
Não

Exemplos:

${__intSum(2,5,MYVAR)}
retornará 7 (2+5) e armazenará o resultado na variável MYVAR. Então ${MYVAR} será igual a 7.
${__intSoma(2,5,7)}
retornará 14 (2+5+7) e armazenará o resultado na variável MYVAR.
${__intSum(1,2,5,${MYVAR})}
retornará 16 se o valor MYVAR for igual a 8, 1+2+5+${MYVAR})

^

__longSoma¶ _

A função longSum pode ser usada para calcular a soma de dois ou mais valores longos, use isso em vez de __intSum sempre que você souber que seus valores não estarão no intervalo -2147483648 a 2147483647.

Parâmetros

Atributo
Descrição
Requeridos
Primeiro argumento
O primeiro valor longo.
Sim
Segundo argumento
O segundo valor longo.
Sim
enésimo argumento
O n- ésimo valor longo.
Não
último argumento
Um nome de referência para reutilizar o valor calculado por esta função. Se especificado, o nome de referência deve conter pelo menos um caractere não numérico, caso contrário, será tratado como outro valor longo a ser adicionado.
Não

Exemplos:

${__longSum(2,5,MYVAR)}
retornará 7 (2+5) e armazenará o resultado na variável MYVAR. Então ${MYVAR} será igual a 7.
${__longSum(2,5,7)}
retornará 14 (2+5+7) e armazenará o resultado na variável MYVAR.
${__longSum(1,2,5,${MYVAR})}
retornará 16 se o valor MYVAR for igual a 8, 1+2+5+${MYVAR})

^

__StringFromFile¶ _

A função StringFromFile pode ser usada para ler strings de um arquivo de texto. Isso é útil para executar testes que exigem muitos dados variáveis. Por exemplo, ao testar um aplicativo bancário, 100s ou 1000s de diferentes números de conta podem ser necessários.

Consulte também o elemento de teste CSV Data Set Config, que pode ser mais fácil de usar. No entanto, isso atualmente não oferece suporte a vários arquivos de entrada.

Cada vez que é chamado, ele lê a próxima linha do arquivo. Todos os encadeamentos compartilham a mesma instância, portanto, encadeamentos diferentes obterão linhas diferentes. Quando o final do arquivo for atingido, ele começará a ler novamente desde o início, a menos que a contagem máxima de loops tenha sido atingida. Se houver várias referências à função em um script de teste, cada uma abrirá o arquivo independentemente, mesmo que os nomes dos arquivos sejam os mesmos. [Se o valor for usado novamente em outro lugar, use nomes de variáveis ​​diferentes para cada chamada de função.]

Instâncias de função são compartilhadas entre threads, e o arquivo é (re-)aberto por qualquer thread que precise da próxima linha de entrada, portanto, usar o threadNumber como parte do nome do arquivo resultará em um comportamento imprevisível.

Se ocorrer um erro ao abrir ou ler o arquivo, a função retornará a string " **ERR** "

Parâmetros

Atributo
Descrição
Requeridos
Nome do arquivo
Caminho para o nome do arquivo. (O caminho pode ser relativo ao diretório de ativação do JMeter) Se estiver usando números de sequência opcionais, o nome do caminho deve ser adequado para passar para DecimalFormat. Veja abaixo exemplos.
Sim
Nome variável
Um nome de referência - refName - para reutilizar o valor criado por esta função. Os valores armazenados estão no formato ${refName} . O padrão é " StringFromFile_ ".
Não
Iniciar número de sequência
Número de sequência inicial (se omitido, o número de sequência final é tratado como uma contagem de loops)
Não
Número de sequência final
Número de sequência final (se omitido, os números de sequência podem aumentar sem limite)
Não

O parâmetro do nome do arquivo é resolvido quando o arquivo é aberto ou reaberto.

O parâmetro de nome de referência (se fornecido) é resolvido toda vez que a função é executada.

Usando números de sequência:

Ao usar os números de sequência opcionais, o nome do caminho é usado como a string de formato para java.text.DecimalFormat . O número de sequência atual é passado como o único parâmetro. Se o número inicial opcional não for especificado, o nome do caminho será usado como está. As sequências de formatação úteis são:

#
insira o número, sem zeros ou espaços à esquerda
000
insira o número compactado em três dígitos com zeros à esquerda, se necessário
Uso de strings de formato
Aqui estão algumas strings de formato e as sequências correspondentes que elas irão gerar.
pino#'.'dat
Irá gerar os dígitos sem zeros à esquerda e tratar o ponto literalmente como
pin1.dat , …, pin9.dat , pin10.dat , …, pin9999.dat
pin000'.'dat
Irá gerar zeros à esquerda enquanto mantém o ponto. Quando os números começarem a ter mais dígitos do que os três dígitos que este formato sugere, a sequência usará mais dígitos como pode ser visto em
pin001.dat , … pin099.dat , …, pin999.dat , …, pin9999.dat
pin'.'dat#
Anexará dígitos sem zeros à esquerda enquanto mantém o ponto e gera
pin.dat1 , …, pin.dat9 , …, pin.dat999

Se forem necessários mais dígitos do que caracteres de formatação, o número será expandido conforme necessário.
Para evitar que um caractere de formatação seja interpretado, coloque-o entre aspas simples. Observe que " . _ _ _ _ _ _
_ _ _ é " , " - o que significa que " #. " se torna " nnn, ".
Consulte a documentação do DecimalFormat para obter detalhes completos.
Se o nome do caminho não contiver nenhum caractere de formatação especial, o número de sequência atual será anexado ao nome, caso contrário, o número será inserido de acordo com as instruções de formatação.
Se o número de sequência inicial for omitido e o número de sequência final for especificado, o número de sequência será interpretado como uma contagem de loops e o arquivo será usado no máximo " final " vezes. Nesse caso, o nome do arquivo não está formatado.
${__StringFromFile(PIN#'.'DAT,,1,2)} - lê PIN1.DAT , PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)} - lê PIN.DAT duas vezes
Observe que o " . " no PIN.DAT acima devenão ser citado. Nesse caso, o número inicial é omitido, portanto, o nome do arquivo é usado exatamente como está.

^

__machineName¶ _

A função machineName retorna o nome do host local. Isso usa o método Java InetAddress.getLocalHost() e o passa para getHostName()

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplos:

${__machineName()}
retornará o nome do host da máquina
${__machineName}
retornará o nome do host da máquina

^

__machineIP¶ _

A função machineIP retorna o endereço IP local. Isso usa o método Java InetAddress.getLocalHost() e o passa para getHostAddress()

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplos:

${__machineIP()}
retornará o endereço IP da máquina
${__machineIP}
retornará o endereço IP da máquina

^

__javaScript¶ _

A função javaScript executa uma parte do código JavaScript (não Java!) e retorna seu valor

A função JMeter Javascript chama um interpretador JavaScript autônomo. Javascript é usado como uma linguagem de script, para que você possa fazer cálculos etc.

javaScript não é a melhor linguagem de script para performances no JMeter. Se o seu plano requer um grande número de threads, é aconselhável usar as funções __jexl3 ou __groovy .
Para Nashorn Engine, consulte Java Platform, Standard Edition Nashorn User's Guide .
Para o motor Rhino, consulte Visão geral do Mozilla Rhino

As seguintes variáveis ​​são disponibilizadas para o script:

Rhinoscript permite acesso a métodos estáticos através de seu objeto Packages. Consulte a documentação Java de script . Por exemplo, pode-se acessar os métodos estáticos JMeterContextService assim: Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

O JMeter não é um navegador e não interpreta o JavaScript nas páginas baixadas.

Parâmetros

Atributo
Descrição
Requeridos
Expressão
A expressão JavaScript a ser executada. Por exemplo:
  • new Date() - retorna a data e hora atuais
  • Math.floor(Math.random()*(${maxRandom}+1)) - um número aleatório entre 0 e a variável maxRandom
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - um número aleatório entre as variáveis ​​minRandom e maxRandom
  • "${VAR}"=="abcd"
Sim
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não
Lembre-se de incluir as aspas necessárias para strings de texto e variáveis ​​JMeter. Além disso, se a expressão tiver vírgulas, certifique-se de escapar delas. Por exemplo em:
${__javaScript('${sp}'.slice(7\,99999))}
a vírgula após 7 é escapada.

Exemplos:

${__javaScript(nova data())}
retornará sab 09 de janeiro de 2016 16:22:15 GMT+0100 (CET)
${__javaScript(new Date(),MYDATE)}
retornará sab 09 de janeiro de 2016 16:22:15 GMT+0100 (CET) e o armazenará na variável MYDATE
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}
usará a variável maxRandom, retornará um valor aleatório entre 0 e maxRandom e o armazenará em MYRESULT
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}
usará as variáveis ​​maxRandom e minRandom , retornará um valor aleatório entre maxRandom e minRandom e o armazenará na variável MYRESULT
${__javaScript("${VAR}"=="abcd",MYRESULT)}
irá comparar o valor da variável VAR com abcd , retornar true ou false e armazenar o resultado em MYRESULT

^

__Aleatório¶ _

A função aleatória retorna um número aleatório que fica entre os valores mínimo e máximo fornecidos.

Parâmetros

Atributo
Descrição
Requeridos
Valor mínimo
Um número
Sim
Valor máximo
Um número maior
Sim
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplos:

${__Random(0,10)}
retornará um número aleatório entre 0 e 10
${__Random(0,10, MYVAR)}
retornará um número aleatório entre 0 e 10 e o armazenará em MYVAR . ${MYVAR} conterá o número aleatório

^

__RandomDate

A função RandomDate retorna uma data aleatória que fica entre os valores de data de início e data de término fornecidos.

Parâmetros

Atributo
Descrição
Requeridos
Formato de hora
String de formato para DateTimeFormatter (padrão yyyy-MM-dd )
Não
Data de início
A data de início, o padrão agora é
Não
Data final
A data de término
Sim
Localidade a ser usada para formato
O formato de string de uma localidade. O código do idioma deve ser minúsculo. O código do país deve ser maiúsculo. O separador deve ser um sublinhado, por exemplo, en_EN . Consulte http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html . Se omitido, por padrão, a função usa o locale do Apache JMeter.
Não
Nome da variável
O nome da variável a ser definida.
Não

Exemplos:

${__RandomDate(,,2050-07-08,,)}
retornará uma data aleatória entre agora e 2050-07-08 . Por exemplo 2039-06-21
${__RandomDate(dd MM aaaa,,08 07 2050,,)}
retornará uma data aleatória com um formato personalizado como 04 03 2034

^

__RandomString¶ _

A função RandomString retorna uma String aleatória de comprimento usando caracteres em chars para usar.

Parâmetros

Atributo
Descrição
Requeridos
Comprimento
Um comprimento numérico da String gerada
Sim
Personagens para usar
Caracteres usados ​​para gerar String
Não
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplos:

${__RandomString(5)}
retornará uma string aleatória de 5 caracteres que pode ser legível ou não
${__RandomString(10,abcdefg)}
retornará uma string aleatória de 10 caracteres escolhidos do conjunto abcdefg , como cdbgdbeebd ou adbfeggfad , …
${__RandomString(6,a12zeczclk, MYVAR)}
retornará uma string aleatória de 6 caracteres escolhidos do conjunto a12zeczclk e armazenará o resultado em MYVAR , MYVAR conterá uma string como 2z22ak ou z11kce , …

^

__RandomFromMultipleVars

A função RandomFromMultipleVars retorna um valor aleatório com base nos valores de variáveis ​​fornecidos por Source Variables .

As variáveis ​​podem ser simples ou multivaloradas, pois podem ser geradas pelos seguintes extratores: Variáveis ​​de vários valores são aquelas que são extraídas quando você define -1 para Match Numbers . Isso leva à criação da variável match number chamada varName_matchNr e para cada valor à criação da variável varName_n onde n = 1, 2, 3 etc.

Parâmetros

Atributo
Descrição
Requeridos
Variáveis ​​de origem
Nomes de variáveis ​​separados por | que contêm os valores que serão usados ​​como entrada para computação aleatória
Sim
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplos:

${__RandomFromMultipleVars(val)}
irá devolver uma string aleatória baseada no conteúdo da variável val tendo em conta se são multivalores ou não
${__RandomFromMultipleVars(val1|val2)}
irá devolver uma string aleatória baseada no conteúdo das variáveis ​​val1 e val2 tendo em conta se são multivalores ou não
${__RandomFromMultipleVars(val1|val2, MYVAR)}
retornará uma string aleatória baseada no conteúdo das variáveis ​​val1 e val2 levando em consideração se são multivalores ou não e armazenará o resultado em MYVAR

^

__UUID¶ _

A função UUID retorna um tipo pseudo aleatório 4 Universally Unique IDentifier (UUID).

Parâmetros

Atributo
Descrição
Requeridos

Exemplos:

${__UUID()}
retornará UUIDs com este formato: c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^

__CSVRead¶ _

A função CSVRead retorna uma string de um arquivo CSV (cf StringFromFile )

NOTA: O JMeter suporta vários nomes de arquivo.

Na maioria dos casos, o elemento CSV Data Set Config mais recente é mais fácil de usar.

Quando um nome de arquivo é encontrado pela primeira vez, o arquivo é aberto e lido em uma matriz interna. Se uma linha em branco for detectada, isso será tratado como fim de arquivo - isso permite que comentários finais sejam usados.

Todas as referências subsequentes ao mesmo nome de arquivo usam a mesma matriz interna. NB o caso do nome do arquivo é significativo para a função, mesmo que o sistema operacional não se importe, então CSVRead(abc.txt,0) e CSVRead(aBc.txt,0) se refeririam a diferentes arrays internos.

O recurso *ALIAS permite que o mesmo arquivo seja aberto mais de uma vez e também permite nomes de arquivo mais curtos.

Cada thread tem seu próprio ponteiro interno para sua linha atual na matriz de arquivos. Quando um encadeamento se refere ao arquivo pela primeira vez, ele será alocado na próxima linha livre na matriz, de modo que cada encadeamento acessará uma linha diferente de todos os outros encadeamentos. [A menos que haja mais threads do que linhas na matriz.]

A função divide a linha em cada vírgula por padrão. Se você deseja inserir colunas contendo vírgulas, precisará alterar o delimitador para um caractere que não apareça em nenhum dado da coluna, definindo a propriedade: csvread.delimiter

Parâmetros

Atributo
Descrição
Requeridos
Nome do arquivo
O arquivo (ou *ALIAS ) para ler
Sim
Número da coluna
O número da coluna no arquivo. 0 = primeira coluna, 1 = segundo etc. " next " - vai para a próxima linha do arquivo. *ALIAS - abra um arquivo e atribua-o ao alias
Sim

Por exemplo, você pode configurar algumas variáveis ​​da seguinte forma:

  • COL1a ${__CSVRead(random.txt,0)}
  • COL2a ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
  • COL1b ${__CSVRead(random.txt,0)}
  • COL2b ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
Isso leria duas colunas de uma linha e duas colunas da próxima linha disponível. Se todas as variáveis ​​estiverem definidas no mesmo Pré-Processador de Parâmetros do Usuário, as linhas serão consecutivas. Caso contrário, um thread diferente pode pegar a próxima linha.

A função não é adequada para uso com arquivos grandes, pois o arquivo inteiro é armazenado na memória. Para arquivos maiores, use o elemento CSV Data Set Config ou StringFromFile .
^

__propriedade¶ _

A função de propriedade retorna o valor de uma propriedade JMeter. Se o valor da propriedade não puder ser encontrado e nenhum padrão tiver sido fornecido, ele retornará o nome da propriedade. Ao fornecer um valor padrão, não há necessidade de fornecer um nome de função - o parâmetro pode ser definido como nulo e será ignorado.

Por exemplo:

  • ${__property(user.dir)} - valor de retorno de user.dir
  • ${__property(user.dir,UDIR)} - retorna o valor de user.dir e salva em UDIR
  • ${__property(abcd,ABCD,atod)} - retorna o valor da propriedade abcd (ou " atod " se não definido) e salva em ABCD
  • ${__property(abcd,,atod)} - retorna o valor da propriedade abcd (ou " atod " se não estiver definida) mas não a salva

Parâmetros

Atributo
Descrição
Requeridos
Nome da propriedade
O nome da propriedade a ser recuperada.
Sim
Nome variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não
Valor padrão
O valor padrão para a propriedade.
Não
^

__P¶ _

Esta é uma função de propriedade simplificada que se destina ao uso com propriedades definidas na linha de comando. Ao contrário da função __property , não há opção para salvar o valor em uma variável e, se nenhum valor padrão for fornecido, assume-se que é 1. O valor 1 foi escolhido porque é válido para variáveis ​​de teste comuns, como loops, contagem de threads, rampa acima etc.

Por exemplo:

Defina o valor da propriedade:

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
Busque os valores:
${__P(group1.threads)} - retorna o valor de group1.threads
${__P(group1.loops)} - retorna o valor de group1.loops
${__P(hostname,www.dummy.org) } - retorna o valor da propriedade hostname ou www.dummy.org se não estiver definido
Nos exemplos acima, a primeira chamada de função retornaria 7 , a segunda retornaria 1 e a última retornaria www.dummy.org (a menos que essas propriedades fossem definidas em outro lugar!)

Parâmetros

Atributo
Descrição
Requeridos
Nome da propriedade
O nome da propriedade a ser recuperada.
Sim
Valor padrão
O valor padrão para a propriedade. Se omitido, o padrão é definido como " 1 ".
Não
^

__log¶ _

A função log registra uma mensagem e retorna sua string de entrada

Parâmetros

Atributo
Descrição
Requeridos
String a ser registrada
Uma linha
Sim
Nível de registro
OUT , ERR , DEBUG , INFO (padrão), WARN ou ERROR
Não
Texto jogável
Se não estiver vazio, cria um Throwable para passar para o registrador
Não
Comente
Se estiver presente, é exibido na string. Útil para identificar o que está sendo registrado.
Não

Os nomes de nível de log OUT e ERR são usados ​​para direcionar a saída para System.out e System.err , respectivamente. Nesse caso, a saída é sempre impressa - não depende da configuração de log atual.

${__log(Mensagem)}
escrito no arquivo de log como " … thread Name: Message "
${__log(Message,OUT)}
escrito na janela do console
${__log(${VAR},,,VAR=)}
escrito no arquivo de log como " … thread Name VAR=value "
^

__logn¶ _

A função logn registra uma mensagem e retorna a string vazia

Parâmetros

Atributo
Descrição
Requeridos
String a ser registrada
Uma linha
Sim
Nível de registro
OUT , ERR , DEBUG , INFO (padrão), WARN ou ERROR
Não
Texto jogável
Se não estiver vazio, cria um Throwable para passar para o registrador
Não

Os nomes de nível de log OUT e ERR são usados ​​para direcionar a saída para System.out e System.err , respectivamente. Nesse caso, a saída é sempre impressa - não depende da configuração de log atual.

${__logn(VAR1=${VAR1},OUT)}
escreva o valor da variável na janela do console
^

__BeanShell¶ _

A função BeanShell avalia o script passado para ela e retorna o resultado.

Para desempenho, é melhor usar a função __groovy

Para obter detalhes completos sobre o uso do BeanShell, consulte o site do BeanShell em http://www.beanshell.org/

Observe que um intérprete diferente é usado para cada ocorrência independente da função em um script de teste, mas o mesmo intérprete é usado para invocações subsequentes. Isso significa que as variáveis ​​persistem nas chamadas para a função.

Uma única instância de uma função pode ser chamada de vários threads. No entanto, o método execute() da função é sincronizado.

Se a propriedade " beanshell.function.init " for definida, ela será passada para o Interpreter como o nome de um arquivo de origem. Isso pode ser usado para definir métodos e variáveis ​​comuns. Há um arquivo init de amostra no diretório bin: BeanShellFunction.bshrc .

As seguintes variáveis ​​são definidas antes da execução do script:

(*) significa que isso é definido antes do arquivo init, se houver, ser processado. Outras variáveis ​​variam de invocação para invocação.

Parâmetros

Atributo
Descrição
Requeridos
script BeanShell
Um script beanshell (não um nome de arquivo)
Sim
Nome da variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplo:

${__BeanShell(123*456)}
retorna 56088
${__BeanShell(source("function.bsh"))}
processa o script em function.bsh

Lembre-se de incluir as aspas necessárias para strings de texto e variáveis ​​JMeter que representam strings de texto.
^

__groovy¶ _

A função __groovy avalia os scripts Apache Groovy passados ​​para ela e retorna o resultado.

Se a propriedade " groovy.utilities " estiver definida, ela será carregada pelo ScriptEngine. Isso pode ser usado para definir métodos e variáveis ​​comuns. Há um arquivo init de amostra no diretório bin : utility.groovy .

As seguintes variáveis ​​são definidas antes da execução do script:

(*) significa que isso é definido antes do arquivo init, se houver, ser processado. Outras variáveis ​​variam de invocação para invocação.

Ao usar esta função, use as variáveis ​​definidas acima em vez de usar a substituição de string para acessar uma variável em seu script. Seguir esse padrão garantirá que seus testes sejam executados, garantindo que o Groovy possa ser armazenado em cache.

Por exemplo , não faça o seguinte:

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

Imagine que a variável myVar muda a cada transação, o Groovy acima não pode ser armazenado em cache, pois o script muda a cada vez.

Em vez disso, faça o seguinte, que pode ser armazenado em cache:

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

Parâmetros

Atributo
Descrição
Requeridos
Expressão para avaliar
Um script Apache Groovy (não um nome de arquivo)
Os valores de argumento que contêm vírgulas devem ser escapados conforme necessário. Se você precisar incluir uma vírgula no valor do seu parâmetro, escape assim: ' \, '
Sim
Nome da variável
Um nome de referência para reutilizar o valor calculado por esta função.
Não

Exemplo:

${__groovy(123*456)}
retorna 56088
${__groovy(vars.get("myVar").substring(0\,2))}
Se o valor de var for JMeter , ele retornará JM enquanto executa String.substring(0,2) . Observe que , foi escapado para \,

Lembre-se de incluir as aspas necessárias para strings de texto e variáveis ​​JMeter que representam strings de texto.
^

__dividir

A função split divide a string passada a ela de acordo com o delimitador e retorna a string original. Se algum delimitador for adjacente, " ? " será retornado como o valor. As strings divididas são retornadas nas variáveis ​​${VAR_1} , ${VAR_2} etc. A contagem de variáveis ​​é retornada em ${VAR_n} . Um delimitador à direita é tratado como uma variável ausente e " ? " é retornado. Além disso, para permitir que funcione melhor com o controlador ForEach, __split agora exclui a primeira variável não utilizada caso ela tenha sido definida por uma divisão anterior.

Exemplo:
Defina VAR =" a||c| " no plano de teste.
${__split(${VAR},VAR,|)}

Isso retornará o conteúdo de VAR , ou seja, " a||c| " e definirá as seguintes variáveis:
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 = nulo

Parâmetros

Atributo
Descrição
Requeridos
String para dividir
Uma string delimitada, por exemplo " a|b|c "
Sim
Nome da variável
Um nome de referência para reutilizar o valor calculado por esta função.
Sim
Delimitador
O caractere delimitador, por exemplo, | . Se omitido, , é usado. Observe que , precisaria ser especificado como \, .
Não
^

__XPath¶ _

A função XPath lê um arquivo XML e corresponde ao XPath. Cada vez que a função é chamada, a próxima correspondência será retornada. No final do arquivo, ele será contornado até o início. Se nenhum nó corresponder, a função retornará a string vazia e uma mensagem de aviso será gravada no arquivo de log do JMeter.

Observe que toda a NodeList é mantida na memória.

Exemplo:
${__XPath(/path/to/build.xml, //target/@name)}
Isso corresponderá a todos os destinos em build.xml e retornará o conteúdo do atributo next name

Parâmetros

Atributo
Descrição
Requeridos
arquivo XML para analisar
um arquivo XML para analisar
Sim
XPath
uma expressão XPath para corresponder a nós no arquivo XML
Sim
^

__setProperty¶ _

A função setProperty configura o valor de uma propriedade JMeter. O valor de retorno padrão da função é a string vazia, portanto, a chamada da função pode ser usada em qualquer lugar em que as funções sejam válidas.

O valor original pode ser retornado configurando o parâmetro opcional para " true ".

As propriedades são globais para o JMeter, portanto, podem ser usadas para comunicação entre threads e grupos de threads

Parâmetros

Atributo
Descrição
Requeridos
Nome da propriedade
O nome da propriedade a ser definida.
Sim
Valor da propriedade
O valor do imóvel.
Sim
Verdadeiro falso
O valor original deve ser devolvido?
Não
^

__hora¶ _

A função time retorna a hora atual em vários formatos.

Parâmetros

Atributo
Descrição
Requeridos
Formato
O formato a ser passado para SimpleDateFormat . A função suporta vários aliases abreviados, veja abaixo. Se omitido, a função retorna a hora atual em milissegundos desde a época.
Não
Nome da variável
O nome da variável a ser definida.
Não

Se a string de formato for omitida, a função retornará a hora atual em milissegundos desde a época. Se o formato corresponder a " /ddd " (onde ddd são dígitos decimais), a função retornará a hora atual em milissegundos dividida pelo valor de ddd . Por exemplo, " /1000 " retorna a hora atual em segundos desde a época. Caso contrário, a hora atual é passada para SimpleDateFormat. Os seguintes aliases abreviados são fornecidos:

  • YMD = aaaaMMdd
  • HMS = HHmms
  • YMDHMS = aaaaMMdd-HHmmss
  • USER1 = o que estiver na propriedade JMeter time.USER1
  • USER2 = o que estiver na propriedade JMeter time.USER2

Os padrões podem ser alterados definindo a propriedade JMeter apropriada, por exemplo, time.YMD=yyMMdd

${__time(dd/MM/aaaa,)}
retornará 21/01/2018 se executado em 21 de janeiro de 2018

${__time(YMD,)}
retornará 20180121 se executado em 21 de janeiro de 2018

${__time()}
retornará o tempo em milissegundos 1516540541624

^

__jexl2

A função jexl retorna o resultado da avaliação de uma expressão Commons JEXL . Consulte os links abaixo para obter mais informações sobre expressões JEXL.

A função __jexl2 usa Commons JEXL 2

Parâmetros

Atributo
Descrição
Requeridos
Expressão
A expressão a ser avaliada. Por exemplo, 6*(5+2)
Sim
Nome da variável
O nome da variável a ser definida.
Não

As seguintes variáveis ​​são disponibilizadas para o script:

Jexl também pode criar classes e chamar métodos nelas, por exemplo:

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Observe que a documentação do Jexl no site sugere erroneamente que " div " faz divisão inteira. Na verdade, " div " e " / " realizam a divisão normal. Pode-se obter o mesmo efeito da seguinte forma:
i= 5/2;
i.intValue(); // ou use i.longValue()

O JMeter permite que a expressão contenha várias instruções.
^

__jexl3¶ _

A função jexl retorna o resultado da avaliação de uma expressão Commons JEXL . Consulte os links abaixo para obter mais informações sobre expressões JEXL.

A função __jexl3 usa Commons JEXL 3

Parâmetros

Atributo
Descrição
Requeridos
Expressão
A expressão a ser avaliada. Por exemplo, 6*(5+2)
Sim
Nome da variável
O nome da variável a ser definida.
Não

As seguintes variáveis ​​são disponibilizadas para o script:

Jexl também pode criar classes e chamar métodos nelas, por exemplo:

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
Observe que a documentação do Jexl no site sugere erroneamente que " div " faz divisão inteira. Na verdade, " div " e " / " realizam a divisão normal. Pode-se obter o mesmo efeito da seguinte forma:
i= 5/2;
i.intValue(); // ou use i.longValue()

O JMeter permite que a expressão contenha várias instruções.
^

__V¶ _

A função V (variável) retorna o resultado da avaliação de uma expressão de nome de variável. Isso pode ser usado para avaliar referências de variáveis ​​aninhadas (que não são suportadas no momento).

Por exemplo, se houver variáveis ​​A1 , A2 e N = 1 :

  • ${A1} - funciona bem
  • ${A${N}} - não funciona (referência de variável aninhada)
  • ${__V(A${N})} - funciona bem. A${N} se torna A1 e a função __V retorna o valor de A1

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
A variável a ser avaliada.
Sim
Valor padrão
O valor padrão caso nenhuma variável seja encontrada, se estiver vazia e nenhuma variável encontrada, a função retorna o nome da variável
Não
^

__evalVar¶ _

A função evalVar retorna o resultado da avaliação de uma expressão armazenada em uma variável.

Isso permite ler uma string de um arquivo e processar qualquer referência de variável nele. Por exemplo, se a variável " query " contiver " selecione ${column} de ${table} " e " column " e " table " contiver " name " e " clientes ", ${__evalVar(query)} será avaliado como " selecione o nome dos clientes ".

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
A variável a ser avaliada.
Sim
^

__eval¶ _

A função eval retorna o resultado da avaliação de uma expressão de string.

Isso permite interpolar referências de variáveis ​​e funções em uma string que é armazenada em uma variável. Por exemplo, dadas as seguintes variáveis:

  • nome = Smith
  • coluna = idade
  • mesa = aniversários
  • SQL = selecione ${column} de ${table} onde name='${name}'
então ${__eval(${SQL})} será avaliado como " selecione a idade dos aniversários onde nome='Smith' ".

Isso pode ser usado em conjunto com CSV Dataset, por exemplo, onde as instruções SQL e os valores são definidos no arquivo de dados.

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
A variável a ser avaliada.
Sim
^

__char

A função char retorna o resultado da avaliação de uma lista de números como caracteres Unicode. Veja também __unescape() , abaixo.

Isso permite adicionar valores de caracteres arbitrários em campos.

Parâmetros

Atributo
Descrição
Requeridos
Número do caractere Unicode (decimal ou 0xhex)
O número decimal (ou número hexadecimal, se prefixado por 0x , ou octal, se prefixado por 0 ) a ser convertido em um caractere Unicode.
Sim

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

^

__unescapar

A função unescape retorna o resultado da avaliação de uma string com escape Java. Veja também __char() acima.

Isso permite adicionar caracteres a campos que são complicados (ou impossíveis) de definir por meio da GUI.

Parâmetros

Atributo
Descrição
Requeridos
String para desapegar
A string a não ser escapada.
Sim

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

^

__unescapeHtml¶ _

Função para liberar uma string contendo escapes de entidade HTML para uma string contendo os caracteres Unicode reais correspondentes aos escapes. Suporta entidades HTML 4.0.

Por exemplo, a cadeia

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

Se uma entidade não for reconhecida, ela será deixada sozinha e inserida literalmente na string de resultado. por exemplo ${__unescapeHtml(>&zzzz;x)} retornará >&zzzz;x .

Usa StringEscapeUtils#unescapeHtml(String) do Commons Lang.

Parâmetros

Atributo
Descrição
Requeridos
String para desapegar
A string a não ser escapada.
Sim
^

__escapeHtml

Função que escapa os caracteres em uma String usando entidades HTML. Suporta entidades HTML 4.0.

Por exemplo,

${__escapeHtml("pão" & "manteiga")}
return: "pão" & ?manteiga? .

Usa StringEscapeUtils#escapeHtml(String) do Commons Lang.

Parâmetros

Atributo
Descrição
Requeridos
Corda para escapar
A string a ser escapada.
Sim
^

__urldecode¶ _

Função para decodificar uma string application/x-www-form-urlencoded . Nota: use UTF-8 como esquema de codificação.

Por exemplo, a cadeia

${__urldecode(Word+%22school%22+is+%22%C3%A9cole%22+in+francês)}
retorna A palavra "escola" é "école" em francês .

Usa a classe Java URLDecoder .

Parâmetros

Atributo
Descrição
Requeridos
String para decodificar
A string com caracteres codificados de URL para decodificar.
Sim
^

__urlencode¶ _

Função para codificar uma string para uma string application/x-www-form-urlencoded .

Por exemplo, a cadeia

${__urlencode(A palavra "escola" é "école" em francês)}
retorna Word+%22school%22+is+%22%C3%A9cole%22+in+francês .

Usa a classe Java URLEncoder .

Parâmetros

Atributo
Descrição
Requeridos
String para codificar
String para codificar em caracteres codificados de URL.
Sim
^

__FileToString¶ _

A função FileToString pode ser usada para ler um arquivo inteiro. Cada vez que é chamado, ele lê o arquivo inteiro.

Se ocorrer um erro ao abrir ou ler o arquivo, a função retornará a string " **ERR** "

Parâmetros

Atributo
Descrição
Requeridos
Nome do arquivo
Caminho para o nome do arquivo. (O caminho pode ser relativo ao diretório de ativação do JMeter)
Sim
Codificação de arquivo se não for o padrão da plataforma
A codificação a ser usada para ler o arquivo. Se não for especificado, o padrão da plataforma será usado.
Não
Nome variável
Um nome de referência - refName - para reutilizar o valor criado por esta função. Os valores armazenados estão no formato ${refName} .
Não

Os parâmetros de nome de arquivo, codificação e nome de referência são resolvidos toda vez que a função é executada.

^

__samplerName

A função samplerName retorna o nome (ou seja, rótulo) do amostrador atual.

A função não funciona em elementos de teste que não possuem um amostrador associado. Por exemplo, o Plano de Teste. Os elementos de configuração também não têm um amostrador associado. No entanto, alguns elementos de configuração são referenciados diretamente pelos samplers, como o HTTP Header Manager e o Http Cookie Manager, e neste caso as funções são resolvidas no contexto do Http Sampler. Pré-processadores, Pós-Processadores e Asserções sempre têm um Sampler associado.

Exemplo:

${__samplerName()}

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
Um nome de referência - refName - para reutilizar o valor criado por esta função. Os valores armazenados estão no formato ${refName} .
Não
^

__TestPlanName¶ _

A função TestPlanName retorna o nome do plano de teste atual (pode ser usado em Incluindo Planos para saber o nome do plano de teste de chamada).

Exemplo:

${__TestPlanName}
retornará o nome do arquivo do seu plano de teste, por exemplo, se o plano estiver em um arquivo chamado Demo.jmx, ele retornará " Demo.jmx

^

__escapeOroRegexpChars¶ _

Função que escapa dos metacaracteres ORO Regexp, é o equivalente a \Q \E no Java Regexp Engine.

Por exemplo,

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

Usa Perl5Compiler#quotemeta(String) do ORO.

Parâmetros

Atributo
Descrição
Requeridos
Corda para escapar
A string a ser escapada.
Sim
Nome variável
Um nome de referência - refName - para reutilizar o valor criado por esta função. Os valores armazenados estão no formato ${refName} .
Não
^

__escapeXml

Função que escapa os caracteres em uma String usando entidades XML 1.0.

Por exemplo,

${__escapeXml("pão" & 'manteiga')}
retorna: "pão" & ?manteiga? .

Usa StringEscapeUtils#escapeXml10(String) do Commons Lang.

Parâmetros

Atributo
Descrição
Requeridos
Corda para escapar
A string a ser escapada.
Sim
^

__timeShift¶ _

A função timeShift retorna uma data no formato fornecido com a quantidade especificada de segundos, minutos, horas, dias ou meses adicionados

Parâmetros

Atributo
Descrição
Requeridos
Formato
O formato a ser passado para DateTimeFormatter. Consulte DateTimeFormatter Se omitido, a função usa milissegundos desde o formato de época.
Não
Data para mudar
Indique a data no formato definido pelo parâmetro 'Formato' para deslocamento Se omitido, a data é definida como agora
Não
valor a mudar
Indique a quantidade especificada de segundos, minutos, horas ou dias para mudar de acordo com uma representação textual de uma duração como PnDTnHnMn.nS. Consulte https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
  • PT20.345S analisa como 20,345 segundos
  • PT15M analisa como 15 minutos
  • PT10H analisa como 10 horas
  • P2D analisa como 2 dias
  • -P6H3M analisa como -6 horas e -3 minutos
Não
Localidade a ser usada para formato
O formato de string de uma localidade. O código do idioma deve ser minúsculo. O código do país deve ser maiúsculo. O separador deve ser um sublinhado. ex: en_EN Veja http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html Se omitido, por padrão a função usa a localidade ApacheJMeter.
Não
Nome da variável
O nome da variável a ser definida.
Não

Exemplos:

${__timeShift(dd/MM/aaaa,21/01/2018,P2D,,)}
retorna 23/01/2018
${__timeShift(dd MMMM aaaa,21 fevrier 2018,P2D,fr_FR,)}
retorna em 23 de fevereiro de 2018

^

__digerir

A função digest retorna um valor criptografado no algoritmo de hash específico com o salt opcional, maiúsculas e nome da variável.

Parâmetros

Atributo
Descrição
Requeridos
Algoritmo
O algoritmo a ser usado para encriptar Para possíveis algoritmos Veja MessageDigest em StandardNames
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
Os espaços são levados em consideração para adicionar Salt e String para codificar
Sim
String para codificar
A String que será criptografada
Sim
Sal para adicionar
Sal a ser adicionado à string (depois dela)
Não
Valor em maiúsculas
O resultado estará em letras minúsculas por padrão. Escolha os resultados verdadeiros para maiúsculas.
Não
Nome da variável
O nome da variável a ser definida.
Não

Exemplos:

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

^

__dateTimeConvert

A função __dateTimeConvert converte uma data que está no formato de origem em um formato de destino armazenando o resultado opcionalmente no nome da variável.

Parâmetros

Atributo
Descrição
Requeridos
Cadeia de datas
A string de data a ser convertida do formato de data de origem para o formato de data de destino. Uma data como tempo de época pode ser usada aqui se o Formato de Data de Origem estiver vazio.
Sim
Formato de data de origem
O formato de data original. Se estiver vazio, o campo Date String deve ser uma hora de época.
Não
Formato da data alvo
O novo formato de data
Sim
Nome da variável
O nome da variável a ser definida.
Não

Exemplo:

${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}
retorna 21/01/2018

Com valor de tempo de época: 1526574881000,

${__dateTimeConvert(1526574881000,,dd/MM/aaaa HH:mm,)}
retorna 17/05/2018 16:34 no horário UTC (-Duser.timezone=GMT)

^

__isPropDefined

A função __isPropDefined retorna true se a propriedade existir ou false se não existir.

Parâmetros

Atributo
Descrição
Requeridos
Nome da propriedade
O nome da propriedade a ser usado para verificar se definido
Sim

Exemplo:

${__isPropDefined(START.HMS)}
retornará verdadeiro

^

__isVarDefined

A função __isVarDefined retorna true se a variável existir ou false se não existir.

Parâmetros

Atributo
Descrição
Requeridos
Nome variável
O nome da variável a ser usado para verificar se definido
Sim

Exemplo:

${__isVarDefined(JMeterThread.last_sample_ok)}
retornará verdadeiro

^

__changeCase¶ _

A função change case retorna um valor de string cujo case foi alterado seguindo um modo específico. O resultado pode opcionalmente ser salvo em uma variável JMeter.

Parâmetros

Atributo
Descrição
Requeridos
String para alterar maiúsculas e minúsculas
A String cujo caso será alterado
Sim
alterar o modo de maiúsculas e minúsculas
O modo a ser usado para alterar maiúsculas e minúsculas, por exemplo, para ab-CD eF :
  • Resultado SUPERIOR como AB-CD EF
  • LOWER resultado como ab-cd ed
  • CAPITALIZE o resultado como Ab-CD eF
alterar o modo de maiúsculas e minúsculas não diferencia maiúsculas de minúsculas
Sim
Nome da variável
O nome da variável a ser definida.
Não

Exemplos:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
retornará AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
vai devolver o trabalho omnia vincit improbus
${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}
retornará Omnibus viis romam pervenitur

^

__StringToFile¶ _

A função __StringToFile pode ser usada para gravar uma string em um arquivo. Cada vez que é chamado, ele grava uma string no arquivo anexando ou substituindo.

O valor de retorno padrão da função é a string vazia

Parâmetros

Atributo
Descrição
Requeridos
Caminho para o arquivo
Caminho para o nome do arquivo. (O caminho é absoluto)
Sim
String para escrever
A string a ser gravada no arquivo.
Se você precisar inserir uma quebra de linha em seu conteúdo, use \n em sua string.
Sim
Anexar ao arquivo?
A maneira de escrever a string, true significa anexar, false significa substituir. Se não for especificado, o anexo padrão será true .
Não
Codificação de arquivo se não UTF-8
A codificação a ser usada para gravar no arquivo. Se não for especificado, a codificação padrão será UTF-8 .
Não
^

20.6 Variáveis ​​Predefinidas ¶

A maioria das variáveis ​​é definida por funções de chamada ou por elementos de teste, como Variáveis ​​Definidas pelo Usuário; nesse caso, o usuário tem controle total sobre o nome da variável usada. No entanto, algumas variáveis ​​são definidas internamente pelo JMeter. Estes estão listados abaixo.

  • COOKIE_cookiename - contém o valor do cookie (consulte HTTP Cookie Manager )
  • JMeterThread.last_sample_ok - se a última amostra foi ou não OK - true / false . Nota: isso é atualizado após a execução dos PostProcessors e Assertions.
  • Variáveis ​​START (veja a próxima seção)

20.6 Propriedades Predefinidas ¶

O conjunto de propriedades do JMeter é inicializado a partir das propriedades do sistema definidas quando o JMeter é iniciado; propriedades JMeter adicionais são definidas em jmeter.properties , user.properties ou na linha de comandos.

Algumas propriedades internas são definidas pelo JMeter. Estes estão listados abaixo. Por conveniência, as propriedades START também são copiadas para variáveis ​​com os mesmos nomes.

  • START.MS - Hora de início do JMeter em milissegundos
  • START.YMD - hora de início do JMeter como aaaaMMdd
  • START.HMS - hora de início do JMeter como HHmmss
  • TESTSTART.MS - hora de início do teste em milissegundos

Observe que as variáveis/propriedades START representam o tempo de inicialização do JMeter, não o tempo de início do teste. Eles são destinados principalmente para uso em nomes de arquivos, etc.

Go to top