Como Passar Dados Entre Etapas de Teste no Apidog

Oliver Kingsley

Oliver Kingsley

6 agosto 2025

Como Passar Dados Entre Etapas de Teste no Apidog

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.

tipos de etapas de teste

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:

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.

Recuperar Dados de Etapas Anteriores via "Valores Dinâmicos" no teste automatizado do Apidog

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:

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:

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

Usar os dados extraídos em Solicitações 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:

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:

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:

{{$.1.response.body.products.length}}

Isso define o número de iterações do laço.

Usar os dados em For Loop

4. Usar os dados em ForEach Loops

Se você deseja iterar por cada item em um array retornado por um endpoint:

Usar os dados em ForEach Loops via método de valor dinâmico

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:

const products = pm.variables.get("$.1.response.body.products")
Usar os dados extraídos em Scripts via método de valor dinâmico

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")
💡
Em scripts, você não pode usar sintaxe de interpolação como {{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:

resultados de consultas de banco de dados no Apidog

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:

usar JSONPath para extrair campos específicos e salvá-los como variáveis

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:

usar os dados extraídos do banco de dados em solicitações de endpoint

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:

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}}

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");
Usar os dados extraídos de for loops em scripts

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:

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}}.

Usar os dados extraídos em Solicitações de API

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:

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:

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.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs