Cartero: cómo hacer múltiples solicitudes al mismo tiempo

182

Quiero PUBLICAR datos de la extensión Postman Google Chrome.

Quiero hacer 10 solicitudes con datos diferentes y debería ser al mismo tiempo.

¿Es posible hacer eso en Postman?

En caso afirmativo, ¿alguien puede explicarme cómo se puede lograr esto?

usuario3384231
fuente

Respuestas:

182

Supongo que no hay tal característica en cartero como para ejecutar pruebas concurrentes.

Si fuera usted, consideraría Apache jMeter, que se usa exactamente para tales escenarios.

Con respecto a Postman, lo único que podría satisfacer más o menos tus necesidades es Postman Runner. ingrese la descripción de la imagen aquí Allí puede especificar los detalles:

  • número de iteraciones,
  • cargar el archivo csv con datos para diferentes ejecuciones de prueba, etc.

Las corridas no serán concurrentes, solo consecutivas.

Espero que ayude. Pero considera jMeter (te encantará).

Yabko
fuente
77
El sitio en el comentario de Ray ha migrado desde entonces a Wordpress.com, aquí hay un enlace de trabajo
Aaroninus
93

Postman no hace eso, pero puede ejecutar varias curlsolicitudes de forma asincrónica en Bash:

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

Recuerde agregar un &después de cada solicitud, lo que significa que la solicitud debe ejecutarse como un trabajo asíncrono.

Sin embargo, Postman puede generar fragmentos curl para su solicitud: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/

Daniel
fuente
3
Esto es brillante: una prueba tan simple y excelente para el verdadero comportamiento asíncrono.
ghukill
Esta es la mejor solución
Shobi
39

No sé si esta pregunta sigue siendo relevante, pero existe tal posibilidad en Postman ahora. Lo agregaron hace unos meses.

Todo lo que necesita es crear un archivo .js simple y ejecutarlo a través de node.js. Se parece a esto:

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.`);
    });
  });

Luego simplemente ejecute este archivo .js ('node fileName.js' en cmd).

Más detalles aquí

Volodymyr Popelniuk
fuente
9
¿Hay alguna manera de lograr pruebas de solicitud concurrentes con la interfaz de usuario del cartero también sin usar la herramienta de línea de comandos newman?
Phil
Así que probé este código y funcionó para ejecutar SAME collection_A; pero ¿qué pasa si tengo 2 colecciones diferentes (colección_A y colección_B) que quiero ejecutar en paralelo? ¿Cómo cambiaría el parámetro de opciones? ¿Has probado esto? Lo que ese laboratorio proporciona de fábrica parece ser más para un caso de uso de prueba de carga, pero quiero ejecutar varias colecciones en paralelo; como colección_A y colección B en paralelo; ¿alguna idea?
pelican
44
Preferiría escribir un script bash que ese archivo .js
ttfreeman
4

No estoy seguro de si la gente sigue buscando soluciones simples para esto, pero puede ejecutar varias instancias del "Corredor de la colección" en Postman. Simplemente cree un corredor con algunas solicitudes y haga clic en el botón "Ejecutar" varias veces para que aparezcan varias instancias.

Dan
fuente
Esto no ejecutará una solicitud paralela como se hizo en la pregunta
Vaibhav Sharma
44
Vaibhav; cada instancia del corredor de prueba se ejecutará en paralelo.
RJFalconer
4

Ejecute todas las colecciones en una carpeta en 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
});
Miguel
fuente
4

En el corredor de la colección del cartero no puede realizar solicitudes asincrónicas simultáneas, por lo tanto, utilice Apache JMeter . Le permite agregar múltiples hilos y agregar temporizador de sincronización

Ashwath Hegde
fuente
-7

Para un enfoque GUI más simple, abra cada solicitud que desee ejecutar en diferentes pestañas. Luego puede ir a cada pestaña con un clic.

Ronald
fuente
1
La pregunta está a punto de ejecutar solicitudes paralelas
Vaibhav Sharma
Está en paralelo solo un poco escalonado.
Ronald
2
Si su solicitud tarda 0.05s, entonces buena suerte cambiando de pestaña y haciendo clic en el botón al mismo tiempo ...
Justinas
Esto no es simple ni razonable.
ChiefTwoPencils