Índice
1. Extrator de expressão regular Jmeter
2. Exemplo de primeiros passos
Prefácio
O extrator de expressões regulares Jmeter é um tipo de pós-processador Jmeter e é usado para ler os resultados solicitados pelo amostrador na forma de expressões regulares.
1. Extrator de expressão regular Jmeter
1. Função
O extrator JSON só pode extrair conteúdo de resposta, enquanto o extrator de expressão regular pode extrair cabeçalhos de resposta, solicitar valores de cabeçalho e, claro, conteúdo de resposta.
2. Explicação detalhada dos parâmetros
- Aplicar a: Escopo do aplicativo, basta selecionar apenas a amostra principal padrão
- Campos de resposta a serem verificados: intervalo de campos a serem extraídos
- Corpo: corpo da resposta, não inclui cabeçalhos de resposta; mais comumente usado
- body(unescaped): corpo da resposta, substituindo todos os caracteres de escape HTML; não recomendado
- body como um documento: extrai texto de diferentes tipos de arquivos; afeta o desempenho
- Cabeçalho de informações: cabeçalho de resposta
- Cabeçalhos de solicitação: cabeçalhos de solicitação
- URL:URL
- Código de resposta: código de resposta
- Mensagem de resposta: mensagem de resposta
- Nome de referência: nome da variável que recebe o valor extraído, *Obrigatório
- Expressões Regulares: Expressões Regulares
- template: um modelo para criar uma string a partir das correspondências encontradas
- Se uma expressão regular tiver vários resultados de extração, os resultados da extração estarão na forma de uma matriz
- Modelo 1, 2... significa atribuir o valor analisado à variável, começando em 1 para corresponder
- 0 significa o que toda a expressão corresponde
- Se houver apenas um resultado, só pode ser 1
- Número correspondente (0 significa aleatório): qual valor usar (0: aleatório, padrão; -1 para todos; 1 para o primeiro valor), opcional
- Valor padrão: valor padrão. Este valor é obtido quando nenhum valor é correspondido. Não é obrigatório.
- Usar valor padrão vazio: após a verificação, se nenhum valor puder ser extraído, uma string vazia será retornada
Nome da variável criada (armazene o valor interceptado pela expressão regular em uma variável e especifique o nome da variável).Ao
usar uma expressão regular para interceptar vários campos de uma informação de retorno de solicitação, você também pode preencher apenas uma variável, como mostrado abaixo.
Neste momento, os vários valores interceptados serão usados com o nome da variável _g1 e o nome da variável _g2. Veja a imagem abaixo para obter detalhes. Esta é uma captura de tela do meu próprio experimento especial.
- Variável = todos os campos interceptados, separados por espaços, conforme mostra a primeira linha da figura acima.
- Variável_g: deve representar o número de variáveis interceptadas?
- Variável _g0: O campo completo correspondido de acordo com a expressão regular (antes da interceptação).
- Variable_g1: O primeiro campo interceptado, quando utilizado, é ${variable name_g1}.
- Variable_g2: O segundo campo interceptado, ao usar ${variable name_g2}, conforme mostrado na figura abaixo.
Expressão regular
Você pode usar o Baidu 在线正则表达式
para praticar expressões regulares. Aqui está um URL de expressão regular online .
Modelo ($1$ significa que você obterá os dados correspondentes à primeira expressão regular, a ser confirmada).De acordo com
meu próprio entendimento, o significado do modelo Modelo é o modelo de formato de retorno do resultado da extração (quando você o define em Regular Expressão) Quando houver vários pontos de extração, como "errmsg":"(.*)", "access_token":"(.+?)", os múltiplos valores extraídos serão retornados ao usuário no formato definido pelo modelo).
A informação que conheço atualmente de outros blogs de negócios on-line é que se vários pontos de extração forem preenchidos na expressão regular do extrator (por exemplo, "errmsg":"(.*)","access_token":"(.+? )". Para Jmeter, esta expressão será tratada como duas expressões regulares - "errmsg":"(.*)","access_token": e,"access_token":"(.+ ?)", você pode preencher $1 $, $2$, etc. no modelo. $1$ representa o resultado da interceptação da primeira expressão regular "errmsg":"(.*)","access_token":, $2$ representa o resultado da interceptação da primeira expressão regular " errmsg":"(.*)","access_token": Os resultados da interceptação das duas expressões regulares, "access_token": "(.+?)", e assim por diante (Nota: Se houver espaços entre $1$ e $2 $ preenchido no Template, os (.*) e ( .+?) extraídos também serão separados pelos espaços correspondentes).
$0$ refere-se à correspondência de texto completo, $1$ $2$ refere-se à obtenção do primeiro e do segundo pontos de extração ao mesmo tempo.
Nº da correspondência (correspondência bem-sucedida)
Valor padrão (quando nenhuma correspondência for encontrada, use este valor para retornar)
Os parâmetros são difíceis de entender, então vamos dar um exemplo~
3. Implementação do extrator de expressão regular
Vamos testar usando a interface neste endereço.
2. Exemplo de primeiros passos
Conteúdo de resposta da interface de login do membro:
{
"ret": 200,
"data": {
"err_code": 0,
"err_msg": "",
"uuid": "F118DD335346CE9D7094C97190587108",
"token": "C1CA708E57F0C33E548745B0D82ADA2A800D886D17BA44261459C39C52376C0D",
"role": "user"
},
"msg": "V3.3.0 YesApi App.User.Login 2022-03-20 10:25:40 hd215"
}
Extrator de expressão regular - extrato de token:
Extrator de expressão regular - extrair uuid:
- Expressão regular-----
( )
Escreva regras de correspondência dentro, usadas para analisar expressões regulares - Expressão regular-----
.*?
significa corresponder a qualquer caractere de qualquer comprimento. Esta também é a expressão regular mais comumente usada. - Geralmente (.+?) e (.*?) podem atender 80% dos nossos cenários de uso
Outras interfaces chamam expressões regulares para extrair variáveis:
3. Exemplos avançados
Interface de teste: http://api.yesapi.cn/docs-api-App.User.GetList.html
Conteúdo da resposta:
{
"ret":200,
"data":
{
"err_code":0,
"err_msg":"",
"users":
[
{
"uuid":"F118DD335346CE9D7094C97190587108",
"username":"xey032001",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-20 10:25:40",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"AAC71046CFA51B8A55D4367652791D66",
"username":"xey04",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:22:24",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"97F22D1CD99D17C2CF29510C728F6570",
"username":"xey03",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:18:56",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6",
"username":"xey02",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:15:35",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"690815A62298F01009010BA062773A9F",
"username":"xey01",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:14:03",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
},
{
"uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE",
"username":"xey",
"role":"user",
"role_desc":"普通会员",
"status":0,
"status_desc":"正常",
"reg_time":"2022-03-19 13:08:25",
"ext_info":
{
"yesapi_avatar":"",
"yesapi_nickname":"",
"yesapi_email":"",
"yesapi_sex":"",
"yesapi_real_name":"",
"yesapi_points":0,
"yesapi_reg_source":"",
"yesapi_reg_note":"",
"yesapi_mobile":"",
"yesapi_expiration_time":""
}
}
],
"total":6
},
"msg":"V3.3.0 YesApi App.User.GetList 2022-03-20 11:16:58 hd215"
}
1) Extraia um valor:
Apenas um valor é extraído da expressão regular e o número correspondente não é -1
1. O modelo não está preenchido
PS: Preencha 1 para o número correspondente, o que significa que se houver vários uuids, o primeiro será correspondido. É o mesmo que o extrator JSON.
Resultado dos testes:
uuid=
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
Como você pode ver, se a expressão regular corresponder ao valor, mas o modelo não for preenchido, será retornado um vazio.
2. Escreva $0$ no modelo
Resultado dos testes:
uuid="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
Você pode ver que se o modelo for preenchido com $0$, o uuid é uuid_g0
3. Escreva $1$ no modelo
Resultado dos testes:
uuid=F118DD335346CE9D7094C97190587108
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
Você pode ver que se o modelo escrever $1$, o uuid é uuid_g1
4. Escreva $2$ no modelo (não existe)
Resultado dos testes:
uuid=null
uuid_g=1
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_g1=F118DD335346CE9D7094C97190587108
Como você pode ver, se o modelo não existir, o uuid será nulo (nulo será retornado mesmo se Usar valor padrão vazio estiver marcado)
2) Extraia vários valores:
Resultado dos testes:
uuid_1=F118DD335346CE9D7094C97190587108
uuid_1_g=1
uuid_1_g0="uuid":"F118DD335346CE9D7094C97190587108"
uuid_1_g1=F118DD335346CE9D7094C97190587108
uuid_2=AAC71046CFA51B8A55D4367652791D66
uuid_2_g=1
uuid_2_g0="uuid":"AAC71046CFA51B8A55D4367652791D66"
uuid_2_g1=AAC71046CFA51B8A55D4367652791D66
uuid_3=97F22D1CD99D17C2CF29510C728F6570
uuid_3_g=1
uuid_3_g0="uuid":"97F22D1CD99D17C2CF29510C728F6570"
uuid_3_g1=97F22D1CD99D17C2CF29510C728F6570
uuid_4=770A6910AF264AEB73F6ECAFEB5BBFB6
uuid_4_g=1
uuid_4_g0="uuid":"770A6910AF264AEB73F6ECAFEB5BBFB6"
uuid_4_g1=770A6910AF264AEB73F6ECAFEB5BBFB6
uuid_5=690815A62298F01009010BA062773A9F
uuid_5_g=1
uuid_5_g0="uuid":"690815A62298F01009010BA062773A9F"
uuid_5_g1=690815A62298F01009010BA062773A9F
uuid_6=24249E71ABBD72D7C1DE8B3E95A0FBBE
uuid_6_g=1
uuid_6_g0="uuid":"24249E71ABBD72D7C1DE8B3E95A0FBBE"
uuid_6_g1=24249E71ABBD72D7C1DE8B3E95A0FBBE
uuid_matchNr=6
Uma expressão regular tem múltiplos ( ):
1. O modelo está vazio:
Resultado dos testes:
uuid=
uuid_g=2
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108","username":"xey032001"
uuid_g1=F118DD335346CE9D7094C97190587108
uuid_g2=xey032001
Você pode ver que se o modelo estiver vazio, o valor não poderá ser obtido e o uuid estará vazio.
2. Apenas um modelo:
Resultado dos testes:
uuid=F118DD335346CE9D7094C97190587108
uuid_g=2
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108",
"username":"xey032001"
uuid_g1=F118DD335346CE9D7094C97190587108
uuid_g2=xey032001
Você pode ver que se houver apenas um modelo, uuid_g1 será obtido
3. Existem dois modelos:
Resultado dos testes:
uuid=F118DD335346CE9D7094C971q90587108,
xey032001
uuid_g=2
uuid_g0="uuid":"F118DD335346CE9D7094C97190587108",
"username":"xey032001"
uuid_g1=F118DD335346CE9D7094C97190587108
uuid_g2=xey032001
Como você pode ver, uuid assume dois valores uuid_g1 e uuid_g2, e eles são separados por vírgulas
Perceber:
- Você só precisa preencher um nome de referência, número correspondente e valor padrão, e não precisa corresponder ao número de expressões regulares.
- Você também pode usar - emenda, desde que o gabarito também use. ou - emenda, por exemplo, preencha o gabarito: 1-2q
Artigo de referência: