Ao projetar fluxos de trabalho de teste automatizados no Apidog, você usará vários tipos de etapas de teste — como solicitações de API, consultas de banco de dados, laços For, laços ForEach, Scripts e muito mais.

Frequentemente, os dados produzidos em uma etapa precisam ser usados em uma etapa posterior. Isso cria um fluxo lógico onde os dados impulsionam o processo e as etapas são interligadas.
Por exemplo, você pode:
- Recuperar um token de usuário em uma etapa anterior, ou executar uma consulta de banco de dados para obter um registro específico.
- Em seguida, usar esses resultados em uma solicitação de endpoint na próxima etapa.
Isso levanta uma questão importante:
Como você pode referenciar corretamente os dados de etapas anteriores (upstream) nas etapas seguintes (downstream)?
Dois Mecanismos para Passagem de Dados no Apidog
No teste automatizado do Apidog, existem dois métodos principais para passar dados entre diferentes etapas de teste:
1. Recuperar Dados de Etapas Anteriores via "Valores Dinâmicos"
Você pode referenciar diretamente a saída de uma etapa anterior (upstream) em uma etapa posterior (downstream) usando o recurso "Valor Dinâmico". Isso permite que você obtenha dados em tempo real sem armazená-los.

2. Armazenar Variáveis e Reutilizá-las
Você pode extrair dados importantes de uma etapa upstream e armazená-los como uma variável. Essas variáveis podem então ser reutilizadas em qualquer etapa que se siga.

Dominar esses dois métodos de passagem de dados é fundamental para construir fluxos de trabalho automatizados eficientes e orientados a dados no Apidog.
Este artigo explica como lidar com dados em diferentes tipos de etapas de teste a partir de dois ângulos: como extrair dados e como usá-los. Ao entender ambos, você poderá construir fluxos de trabalho de teste mais flexíveis e melhor conectados.
Extraindo e Usando Dados de Resposta de Endpoint
Entendendo os Dados de Resposta de Endpoint
Em testes automatizados, as solicitações de API geralmente retornam respostas JSON estruturadas, que frequentemente servem como entrada para etapas de teste posteriores.

Ao contrário de outros tipos de etapas, as respostas de endpoint tendem a ser mais complexas — frequentemente incluindo objetos aninhados e arrays.
Como Extrair Dados da Resposta de Endpoint
Existem duas maneiras principais de extrair e passar dados de resposta de endpoint entre as etapas de teste:
Método Um: Referência de Valor Dinâmico
Use "Valores Dinâmicos" para referenciar dados diretamente de etapas anteriores:
- Em qualquer campo de entrada de uma etapa downstream, clique no ícone da varinha mágica.
- Escolha "Recuperar Dados de Etapas Anteriores"
- O Apidog inserirá automaticamente a expressão correta — sem necessidade de escrevê-la manualmente.

Método Dois: Extrair Dados como Variáveis
Você também pode usar o recurso "Extrair Variáveis" nos pós-processadores de endpoint para extrair campos específicos da resposta como variáveis.
Por exemplo, para extrair o id
dos produtos em uma resposta:
- Defina o nome da variável como
products_id
- Use o JSONPath:
$.products[0].id

Em etapas posteriores, basta referenciá-lo usando {{products_id}}
.
Como Usar Dados Extraídos da Resposta de Endpoint
Depois de extrair dados de uma resposta de API — seja usando "Valores Dinâmicos" ou "Variáveis Extraídas" — você pode usar esses dados em etapas downstream de várias maneiras:
1. Usar os dados em solicitações de endpoint
- Via Valor Dinâmico: Assim como antes, clique no ícone da varinha mágica no campo de entrada, escolha "Recuperar Dados de Etapas Anteriores", e o Apidog inserirá a expressão correta automaticamente.
- Via Variável Extraída: Se você salvou um valor anteriormente como uma variável (por exemplo,
products_id
), basta usar{{products_id}}
como um parâmetro na solicitação de API.

2. Usar os dados em operações de banco de dados
Você pode usar a resposta da API como entrada em uma consulta de banco de dados. Ambos os métodos funcionam:
- Método de Valor Dinâmico
SELECT * FROM products WHERE id = '{{$.1.response.body.products[0].id}}'
Use valores dinâmicos para referenciar os dados da resposta da API diretamente na consulta SQL:

- Método de Variável Extraída: Se você extraiu o ID do produto como uma variável chamada
products_id
, use:
SELECT * FROM products WHERE id = '{{products_id}}'
3. Usar os dados em For Loop
Para repetir etapas com base no comprimento de um array de uma resposta de API:
- Use valores dinâmicos para obter o comprimento do array, por exemplo:
{{$.1.response.body.products.length}}
Isso define o número de iterações do laço.

4. Usar os dados em ForEach Loops
Se você deseja iterar por cada item em um array retornado por um endpoint:
- Método de Valor Dinâmico: Extraia diretamente o array inteiro, por exemplo
{{$.1.response.body.products}}

- Método de Extração de Variável: Assumindo que o array inteiro foi extraído como a variável
products
, então insira diretamente{{products}}
no laço.

5. Usar os dados em scripts
Para usar dados de etapas anteriores dentro de um script, use o método pm.variables.get()
. Veja como:
- Método de Valor Dinâmico: Leia os dados diretamente de uma etapa anterior:
const products = pm.variables.get("$.1.response.body.products")

- Método de Extração de Variável: Se você salvou o array ou valor como uma variável, use o seguinte script para obter os dados:
Obter o valor de uma variável temporária:
const products = pm.variables.get("products")
Obter o valor de uma variável de ambiente:
const products = pm.environment.get("products")
Obter o valor de uma variável global:
const products = pm.globals.get("products")
{{products}}
diretamente. Em vez disso, você deve recuperar os valores das variáveis usando os métodos apropriados mencionados acima.Extraindo e Usando Resultados de Consultas de Banco de Dados
Entendendo os Dados do Banco de Dados
Quando uma etapa de consulta de banco de dados é executada, ela retorna dados estruturados na forma de um array de objetos. Mesmo que apenas um registro seja retornado, ele ainda estará envolvido em um array. Por exemplo:

Ao contrário das respostas de endpoint, dados de etapas de banco de dados não podem ser acessados diretamente usando variáveis dinâmicas. Você deve primeiro extrair os valores para variáveis.
Como Extrair Dados do Banco de Dados
Após executar a consulta SQL em uma etapa de banco de dados, o Apidog analisará automaticamente a resposta em dados estruturados, assim:
[
{
"id": "1000",
"title": "Título 1",
"description": "Descrição para o Título 1"
}
]
Você pode então usar o JSONPath para extrair campos específicos e salvá-los como variáveis.
Por exemplo:
- Nome da variável:
products_id
- JSONPath:
$[0].id
(para extrair o ID do primeiro item). Se você quiser extrair todo o conjunto de resultados, use:$
. - As etapas downstream referenciam variáveis através de
{{ }}
, por exemplo:{{products_id}}

Como Usar Dados Extraídos de um Banco de Dados
1. Usar os dados em solicitações de endpoint
Se sua consulta de banco de dados retornar um ID e você o salvou como uma variável (products_id
), você pode usá-lo diretamente em uma solicitação de endpoint downstream:

2. Usar os dados em ForEach Loops
Se sua consulta retornar uma lista de registros e você quiser processar cada um individualmente, você pode usar o array inteiro como a fonte para um laço ForEach
:

A premissa é que você salve o array inteiro ao extrair variáveis em operações de banco de dados, por exemplo:
- Nome da variável:
products
- JSONPath:
$

3. Usar os dados em scripts
Para usar variáveis de banco de dados extraídas em um script, use o mesmo método que com outras variáveis.
Obter o valor de uma variável temporária:
const products = pm.variables.get("products")
Obter o valor de uma variável de ambiente:
const products = pm.environment.get("products")
Obter o valor de uma variável global:
const products = pm.globals.get("products")
Extraindo e Usando Dados de For Loops
Como For Loops
Funciona?
Um For loop
é usado para repetir um conjunto específico de ações várias vezes. Ele é executado com base em um número definido de iterações.
Você pode definir um número fixo de vezes para o laço, ou usar um valor dinâmico como o comprimento de um array .length
retornado de uma etapa anterior. Por exemplo: {{$.1.response.body.products.length}}
:

Nota: Ao contrário de outras etapas que produzem dados, um For loop
em si não retorna dados diretamente. Ele apenas fornece um valor de índice (começando de 0) para mostrar quantas vezes o laço foi executado.
Como Extrair Dados de For Loops
Durante o processo de execução, você pode acessar o índice atual do laço usando a sintaxe de variável dinâmica: {{$.9.index}}

- O número
9
refere-se ao ID da etapaFor loops
. - Cada etapa tem um ID único.
- O índice começa em 0 para o primeiro laço, 1 para o segundo, e assim por diante.
Como Usar Dados Extraídos de For Loops
1. Usar os dados em scripts
Se você deseja usar informações relacionadas ao laço em seu script de teste, você pode usar pm.variables.get()
para obter o índice atual:
// Obter o índice atual do laço
const index = pm.variables.get("$.7.index");

2. Usar os dados com outras fontes de dados
Um caso de uso comum para um For loop
é processar dados de etapas anteriores — como iterar por um array e lidar com cada item:
// Obter o array de uma etapa anterior
const products = pm.variables.get("$.1.response.body.products");
// Obter o índice atual do laço
const index = pm.variables.get("$.7.index");
// Acessar o item atual no array usando o índice
console.log(products[index]);
Isso permite que você execute operações em lote em cada item do array durante cada iteração do laço.
Extraindo e Usando Dados de ForEach Loop
Como o ForEach Loop
Funciona?
O laço ForEach é projetado especificamente para dados de array. Ele itera automaticamente por cada elemento no array e executa o mesmo conjunto de operações.
A principal diferença entre um ForEach loop
e um For loop
é que o ForEach loop
extrai automaticamente os dados completos do elemento atual do array em cada iteração, tornando-o diretamente acessível em suas etapas filhas.
Acessando Dados em um ForEach Loop
Dentro de um ForEach loop
, o sistema cria automaticamente duas variáveis especiais:
- Elementos do laço atual: Contém os dados completos do elemento do array que está sendo processado atualmente. Por exemplo:
{{$.4.element}}
. Se o array contiver objetos, você pode acessar diretamente suas propriedades, como:{{$.4.element.id}}
,{{$.4.element.title}}
, etc.

- Índice do laço atual: Representa a contagem da iteração atual (começando de 0), por exemplo,
{{$.4.index}}
.

Nota: O número 4
refere-se ao ID da etapa ForEach Loop
. Em seu fluxo de trabalho real, substitua isso pelo ID de etapa correto do seu processo.
Casos de Uso Comuns para Dados de ForEach Loop
1. Usar os dados em solicitações de endpoint
Os laços ForEach são perfeitos para lidar com operações de dados em lote. Por exemplo, se você tem um array de itens, você pode enviar automaticamente uma solicitação de endpoint para cada item no array. Durante cada laço, o mesmo template de solicitação é reutilizado, mas preenchido com dados diferentes, como {{$.4.element.id}}
.

2. Usar os dados em operações de banco de dados
Você pode usar dados do item atual do laço para executar consultas de banco de dados ou inserir múltiplas linhas.
Exemplo: Consultando o banco de dados usando o campo do item atual
SELECT * FROM products WHERE id = '{{$.4.element.id}}'
A expressão {{$.4.element.id}}
pode ser acessada usando o recurso de valor dinâmico.

Inserindo múltiplos campos do item atual em uma tabela:
INSERT INTO products (id, title) VALUES ('{{$.4.element.id}}', '{{$.4.element.title}}')
3. Usar os dados em scripts
Se você precisar processar ainda mais os dados do laço em um script personalizado, você pode usar o método pm.variables.get()
para recuperar os valores:
// Obter o elemento atual
const item = pm.variables.get("$.4.element");
// Obter o índice atual
const index = pm.variables.get("$.4.index");
Extraindo e Usando Dados de Scripts
Como os Dados de Script Funcionam
Ao contrário de outras etapas em um fluxo de trabalho, os scripts não geram automaticamente uma saída que possa ser usada diretamente nas etapas seguintes. Se você deseja passar dados de um script para etapas posteriores, deve armazená-los manualmente em uma variável.
Como Extrair Dados de um Script
Você pode salvar valores em diferentes tipos de variáveis assim:
// Obter dados de resposta JSON
// 1. Da resposta do endpoint atual
// const currentData = pm.response.json();
// 2. Ou obtê-los de uma etapa anterior usando um valor dinâmico
const preData = pm.variables.get("$.1.response.body");
// Salvar em variáveis de ambiente
pm.environment.set('products', preData.products);
pm.environment.set('products_id', preData.products[0].id);
// Salvar em variáveis globais
pm.globals.set('products', preData.products);
// Salvar em variáveis temporárias (válidas apenas durante esta execução)
pm.variables.set('products', preData.products);
Uma vez que as variáveis são extraídas e definidas, você pode referenciá-las em etapas posteriores usando a sintaxe {{variableName}}
.
Como Usar Dados Extraídos de Scripts
1. Usar os dados em solicitações de endpoint
Variáveis definidas em um script podem ser usadas diretamente como parâmetros em solicitações de endpoint downstream. Por exemplo, se você salvar products_id
no script, você pode referenciá-lo em uma solicitação posterior assim: {{products_id}}
.

2. Usar os dados em operações de banco de dados
Variáveis de script também podem ser usadas para construir instruções SQL dinâmicas. Por exemplo:
SELECT * FROM products WHERE id = '{{products_id}}'
3. Usar os dados em For Loop
Você pode usar um script para gerar a contagem do laço ou outros valores intermediários, armazená-los como "variáveis temporárias" e passá-los para a etapa For Loop
:
pm.variables.set("loopCount", 5);
Então, nas configurações do laço, use {{loopCount}}
como o número de iterações.
4. Usar os dados em ForEach Loops
Você pode armazenar um array inteiro em uma variável e usá-lo como a fonte de dados para um ForEach Loop
.
Exemplo:
// Opcionalmente, recuperar array de uma etapa anterior usando valores dinâmicos
// const preData = pm.variables.get("$.1.response.body.products")
const preData = [{id: 1}, {id: 2}, {id: 3}];
// Salvar em variável de ambiente
pm.environment.set('products', preData);
Então, no ForEach Loop
, defina a fonte de dados para {{products}}
.
Conclusão
Para construir um fluxo de trabalho de teste automatizado eficiente, é essencial entender como extrair e usar dados de diferentes tipos de etapas:
- Etapas de endpoint e banco de dados geram dados relacionados ao negócio.
- Etapas de laço controlam o fluxo da lógica.
- Etapas de script são usadas para processar e transformar dados.
Ao combinar a referência de valor dinâmico com a extração de variáveis, você pode projetar um processo de teste flexível e poderoso, orientado a dados.
Melhores Práticas para Passagem de Dados:
- Use a referência de valor dinâmico para dados simples que são usados apenas uma vez ou ocasionalmente.
- Use a extração de variáveis para dados que precisam ser reutilizados em várias etapas ou manipulados em scripts.
Escolher o método certo com base na complexidade dos dados e na frequência de uso tornará seu fluxo de trabalho mais fácil de manter e mais eficiente.