Carteiro: como fazer várias solicitações ao mesmo tempo


182

Quero postar dados da extensão Postman Google Chrome.

Quero fazer 10 solicitações com dados diferentes e deve ser ao mesmo tempo.

É possível fazer isso no Postman?

Se sim, alguém pode me explicar como isso pode ser alcançado?

Respostas:


182

Eu acho que não existe esse recurso no carteiro para executar testes simultâneos.

Se eu fosse você, consideraria o Apache jMeter, que é usado exatamente para esses cenários.

Em relação ao Postman, a única coisa que poderia atender mais ou menos às suas necessidades é - Postman Runner. insira a descrição da imagem aqui Lá você pode especificar os detalhes:

  • número de iterações,
  • faça o upload do arquivo csv com dados para diferentes execuções de teste etc.

As execuções não serão simultâneas, apenas consecutivas.

Espero que ajude. Mas considere o jMeter (você vai adorar).


7
O site no comentário de Ray, desde então, migrou para Wordpress.com, aqui está um link trabalhando
Aaroninus

93

O Postman não faz isso, mas você pode executar várias curlsolicitações de forma assíncrona no Bash:

curl url1 & curl url2 & curl url3 & ...

Lembre-se de adicionar um &após cada solicitação, o que significa que a solicitação deve ser executada como um trabalho assíncrono.

O Postman, no entanto, pode gerar um snippet de curl para sua solicitação: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/


3
Isso é brilhante - um teste tão simples e excelente para o verdadeiro comportamento assíncrono.
Ghukill 5/05

Esta é a melhor solução
Shobi 24/06

39

Não sei se essa pergunta ainda é relevante, mas existe essa possibilidade no Postman agora. Eles o adicionaram alguns meses atrás.

Tudo o que você precisa é criar um arquivo .js simples e executá-lo via node.js. Se parece com isso:

var path = require('path'),
  async = require('async'), //https://www.npmjs.com/package/async
  newman = require('newman'),

  parametersForTestRun = {
    collection: path.join(__dirname, 'postman_collection.json'), // your collection
    environment: path.join(__dirname, 'postman_environment.json'), //your env
  };

parallelCollectionRun = function(done) {
  newman.run(parametersForTestRun, done);
};

// Runs the Postman sample collection thrice, in parallel.
async.parallel([
    parallelCollectionRun,
    parallelCollectionRun,
    parallelCollectionRun
  ],
  function(err, results) {
    err && console.error(err);

    results.forEach(function(result) {
      var failures = result.run.failures;
      console.info(failures.length ? JSON.stringify(failures.failures, null, 2) :
        `${result.collection.name} ran successfully.`);
    });
  });

Em seguida, basta executar este arquivo .js ('node fileName.js' no cmd).

Mais detalhes aqui


9
Existe uma maneira de obter testes de solicitação simultâneos com a interface do usuário do carteiro também sem usar a ferramenta de linha de comando newman?
Phil

Então tentei esse código e funcionou para executar a mesma coleção_A; mas e se eu tiver duas coleções diferentes (coleção_A e coleção_B) que quero executar em paralelo? Como o parâmetro options mudaria? Você já tentou isso? O que esse laboratório fornece fora da caixa parece ser mais para um caso de uso de teste de carga, mas eu quero executar várias coleções em paralelo; como coleção_A e coleção B em paralelo; qualquer ideia?
Pelican

4
Eu prefiro muito mais para escrever um script do que .js arquivo
ttfreeman

4

Não tenho certeza se as pessoas ainda estão procurando soluções simples para isso, mas você pode executar várias instâncias do "Collection Runner" no Postman. Basta criar um corredor com algumas solicitações e clicar no botão "Executar" várias vezes para abrir várias instâncias.


Esta não será executado pedido paralelo como pediu em questão
Vaibhav Sharma

4
Vaibhav; cada instância do executor de teste será executada em paralelo.
RJFalconer

4

Execute toda a coleção em uma pasta em paralelo:

'use strict';

global.Promise = require('bluebird');
const path = require('path');
const newman =  Promise.promisifyAll(require('newman'));
const fs = Promise.promisifyAll(require('fs'));
const environment = 'postman_environment.json';
const FOLDER = path.join(__dirname, 'Collections_Folder');


let files = fs.readdirSync(FOLDER);
files = files.map(file=> path.join(FOLDER, file))
console.log(files);

Promise.map(files, file => {

    return newman.runAsync({
    collection: file, // your collection
    environment: path.join(__dirname, environment), //your env
    reporters: ['cli']
    });

}, {
   concurrency: 2
});

4

No runner de coleção do carteiro, você não pode fazer solicitações assíncronas simultâneas; portanto, use o Apache JMeter . Permite adicionar vários threads e adicionar temporizador de sincronização a ele



-7

Para uma abordagem GUI mais simples, abra todas as solicitações que você deseja executar em diferentes guias. Depois, você pode acessar cada guia e clicar em Executar.


1
A pergunta é sobre a pedidos paralelos de execução
Vaibhav Sharma

É em paralelo apenas ligeiramente escalonado.
Ronald

2
Se sua solicitação demorar 0,05s, boa sorte alternando guias e clicando no botão ao mesmo tempo ....
Justinas

Isto não é simples ou razoável.
ChiefTwoPencils
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.