Postman Iteration Data ou Interação em um conjunto de dados.

Reinaldo Mateus Rossetti Junior
6 min readSep 20, 2021

O Postman’s Collection Runner permite que você execute todos os requests dentro de uma coleção localmente no aplicativo Postman. Ele também executa testes de API e gera relatórios para que você possa medir o desempenho de seus testes.

Para isso faremos o upload de um arquivo de dados para o executor de coleções “Runner”, com o objetivo :

  • Testar centenas de cenários através do dataset de dados;

Vamos começar com o básico. Podemos exportar essas informações de um banco de dados, a maioria aceita o formato Json ou CSV;

Executando uma coleção com o Collection Runner

Para executar uma coleção no aplicativo Postman, clique na divisa do nome da coleção, abaixo dos (. . .) ao lado do nome da coleção para expandir a visualização de detalhes. Selecione o botão azul Executar para abrir o Runner de coleção em uma nova janela.

Verifique a coleção e o ambiente, se estiver usando um, e clique no botão azul Executar . Você verá as solicitações de coleção em execução em sequência e os resultados de seus testes, se tiver escrito algum.

Use variáveis ​​de dados

E se você quiser percorrer os dados de um arquivo de dados? Isso permitiria que você teste centenas de cenários.

No aplicativo Postman, você pode importar um arquivo CSV ou JSON e usar os valores do arquivo de dados em suas solicitações e scripts. Você pode fazer isso usando variáveis ​​de dados com uma sintaxe semelhante à que fazemos quando usamos variáveis ​​de ambiente e globais .

Usando variáveis ​​de dados em solicitações

Os campos de texto no aplicativo Postman, como a seção de autorização ou o editor de dados de parâmetros, dependem da substituição de strings para resolver variáveis. Portanto, você deve usar a sintaxe de chaves duplas como {{variable-name}}nos campos de texto.

Usando variáveis ​​de dados em scripts

As seções de pré-solicitação e script de teste do aplicativo Postman dependem de JavaScript (não de texto). Portanto, você pode usar a pm.*API do Postman , como o pm.iterationData.get(“variable-name”)método, para acessar os valores carregados do arquivo de dados.

Use arquivos de dados

Usando um arquivo CSV

O arquivo CSV deve ser formatado de forma que a primeira linha contenha os nomes das variáveis ​​que você deseja usar nas solicitações. Depois disso, cada linha será usada como uma linha de dados. As terminações de linha do arquivo CSV devem estar no formato UNIX. Cada linha deve ter o mesmo número de colunas.

Usando um arquivo JSON

O arquivo JSON deve ser formatado como uma matriz de pares de chave-valor. As chaves serão o nome da variável com os valores dos dados usados ​​na solicitação.

Os arquivos acima estão no repositório abaixo, csv e json e a colletions.

https://github.com/reinaldorossetti/Postman/blob/main/dataset/csvData.csv

https://github.com/reinaldorossetti/Postman/blob/main/dataset/data.json

https://github.com/reinaldorossetti/Postman/blob/main/collections/Openweathermap.postman_collection.json

Fizemos um GET na API do https://openweathermap.org/current

End Point:

api.openweathermap.org/data/2.5/weather?q={{State}},{{StateCode}},{{CountryCode}}&units={{units}}&appid={{appid}}

Como utilizamos o método GET os dados vão na url, se fosse POST os dados iriam no Body da Requisição.

Poderíamos mandar a requisição, mas ela na verdade não faz nenhum teste no momento, simplesmente somente manda a requisição com dados fixos. Para isso temos duas telas a Pre-request Script aonde colocamos os dados necessários para realizar a requisição, e o outro Tests, para realizar os testes.

Dados fixos:

pm.environment.set("State", "Alabama");pm.environment.set("StateCode", "AL");pm.environment.set("CountryCode", "US");pm.environment.set("units", "metric");pm.environment.set("appid", "seutoken");

Primeira coisa que tem que fazer é gerar a chave\token de acesso a api, se cadastre no site e depois gere a chave em API Keys.

https://home.openweathermap.org/api_keys

Agora comentamos os dados que iram se repete N vezes. Somente vai ficar os dados que não precisamos repetir, que é a temperatura em Celsius e Appid que é a chave de autenticação.

// pm.environment.set("State", "Alabama");// pm.environment.set("StateCode", "AL");// pm.environment.set("CountryCode", "US");
// For temperature in Fahrenheit use units=imperial// For temperature in Celsius use units=metric// Temperature in Kelvin is used by default, no need to use units parameter in API callpm.environment.set("units", "metric");pm.environment.set("appid", "suaChaveDeAcessoDoSiteOpenweathermap");

Uma observação muito importante é o nome das variáveis da colletion devem ser o mesmo nome nos arquivos CSV e Json.

Exemplo: weather?q={{State}},{{StateCode}},{{CountryCode}}&units={{units}}&appid={{appid}

"State","CountryCode","StateCode""Alabama","US","AL"

Json → State, CountryCode, StateCode

{"State": "Alabama","CountryCode": "US","StateCode": "AL"}

Vamos realizar os asserts do nosso teste:

// pegando os dados e variáveis para validação
const bodyResponse = pm.response.json();
const state = pm.iterationData.get("State");const country = pm.iterationData.get("CountryCode");pm.test("Validando o status code igual a 200", function () { pm.response.to.have.status(200);});pm.test("Validando o body do response contem a string weather", function () { pm.expect(pm.response.text()).to.include("weather");});pm.test("Validando dados da resposta da requisicao", function () { pm.expect(bodyResponse.sys.country).to.equal(country) pm.expect(bodyResponse.name).to.equal(state) pm.expect(bodyResponse.cod).to.be.equal(200)});const schema = { "type": "object", "properties": { "name": { "type": "string" }, "id": { "type": "integer" }, "temp": {"type": "float"}, "temp_min": {"type": "float"}, "temp_max": {"type": "float"},}};pm.test('Validando o json Schema', function () { pm.expect(tv4.validate(bodyResponse, schema)).to.be.true;});

Agora sim no Teste de API está pronto!

Agora vamos em Runner como no primeiro gift e depois selecionamos o arquivo de dados que iremos usar.

Agora vamos mostrar o processo.

Para Rodar no Newman, pegando o caminho do nosso repositório local, usamos o comando “- -iteration-data” e depois o caminho do arquivo, segue abaixo o comando completo:

git clone https://github.com/reinaldorossetti/Postman.git

Newman:

newman run collections/Openweathermap.postman_collection.json --iteration-data dataset/data.json -r htmlextra --reporter-htmlextra-export testResults/index.html

Temos o total de 51 testes somente utilizando variações de dados em um único teste. Para ficar legal nossa automação esta no Git Actions, em outro momento faço um Post sobre ele.

Git Actions Workflow:

https://github.com/reinaldorossetti/Postman/actions/runs/1261875461/workflow

Nosso Relatório esta no link abaixo:

https://reinaldorossetti.github.io/Postman/

Tente você mesmo agora com outros arquivo:

Clique no botão laranja Executar no Postman acima para importar esta coleção de exemplo para sua versão local do aplicativo Postman.

Executaremos essa coleção usando um arquivo de dados sobre meu quarto tipo de comida japonesa favorita: ramen. O arquivo de dados pode ser exportado do Google Search Trends sobre o volume de pesquisas por “Ramen” por cidade . Baixe um ou ambos os arquivos de dados de amostra e experimente.

Se você está procurando instruções passo a passo ou capturas de tela úteis, verifique a documentação da coleção .

Referências:

https://blog.postman.com/using-csv-and-json-files-in-the-postman-collection-runner/

https://github.com/postmanlabs/newman

https://learning.postman.com/docs/running-collections/working-with-data-files/

--

--