Postino: come effettuare più richieste contemporaneamente


183

Voglio inviare i dati dall'estensione Postman di Google Chrome.

Voglio fare 10 richieste con dati diversi e dovrebbe essere allo stesso tempo.

È possibile farlo in Postman?

Se sì, qualcuno mi può spiegare come si può ottenere questo risultato?

Risposte:


182

Immagino che nel postino non ci siano caratteristiche tali da eseguire test simultanei.

Se fossi in te prenderei in considerazione Apache jMeter che viene utilizzato esattamente per tali scenari.

Per quanto riguarda Postman, l'unica cosa che potrebbe più o meno soddisfare le tue esigenze è Postman Runner. inserisci qui la descrizione dell'immagine Lì puoi specificare i dettagli:

  • numero di iterazioni,
  • carica il file CSV con i dati per diverse esecuzioni di test, ecc.

Le corse non saranno simultanee, solo consecutive.

Spero che aiuti. Ma considera jMeter (ti piacerà).


7
Il sito nel commento di Ray da allora è migrato su Wordpress.com, ecco un link funzionante
Aaroninus,

93

Postman non lo fa ma puoi eseguire più curlrichieste in modo asincrono in Bash:

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

Ricordarsi di aggiungere un &dopo ogni richiesta, il che significa che tale richiesta deve essere eseguita come lavoro asincrono.

Postman tuttavia può generare frammenti di ricciolo per la tua richiesta: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/


3
Questo è geniale - un test così semplice, ottimo per un vero comportamento asincrono.
ghukill

Questa è la soluzione migliore
Shobi,

40

Non so se questa domanda sia ancora pertinente, ma ora esiste una simile possibilità in Postman. L'hanno aggiunto qualche mese fa.

Tutto ciò che serve è creare un semplice file .js ed eseguirlo tramite node.js. Sembra così:

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

Quindi esegui questo file .js ('node fileName.js' in cmd).

Maggiori dettagli qui


9
Esiste un modo per eseguire test delle richieste simultanee anche con l'interfaccia utente postino senza utilizzare lo strumento da riga di comando newman?
Phil

Quindi ho provato questo codice e ha funzionato per eseguire la SAME collection_A; ma cosa succede se ho 2 raccolte diverse (collection_A e collection_B) che voglio eseguire in parallelo? Come cambierebbe il parametro delle opzioni? Ci hai provato? Ciò che quel laboratorio fornisce out of the box sembra essere più per un caso d'uso di test di carico, ma voglio eseguire più raccolte in parallelo; come collection_A e collection B in parallelo; qualche idea?
pellicano,

4
Preferirei di gran lunga scrivere uno script bash piuttosto che quel file .js
ttfreeman l'

4

Non sei sicuro che le persone stiano ancora cercando soluzioni semplici a questo, ma sei in grado di eseguire più istanze di "Collection Runner" in Postman. Basta creare un corridore con alcune richieste e fare clic più volte sul pulsante "Esegui" per visualizzare più istanze.


Questo non eseguirà la richiesta parallela come richiesto in questione
Vaibhav Sharma,

4
Vaibhav; ogni istanza del test runner verrà eseguita in parallelo.
RJFalconer,

4

Esegui tutta la raccolta in una cartella in parallelo:

'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

In Postman's Collection Runner non è possibile effettuare richieste asincrone simultanee, quindi utilizzare invece Apache JMeter . Ti consente di aggiungere più thread e aggiungere il timer di sincronizzazione ad esso



-7

Per un approccio GUI più semplice, apri ogni richiesta che desideri eseguire in diverse schede. Quindi puoi andare su ogni scheda con un clic.


1
La domanda sta per eseguire richieste parallele
Vaibhav Sharma,

È in parallelo leggermente sfalsato.
Ronald,

2
Se la tua richiesta impiega 0.05s, allora buona fortuna cambiando scheda e facendo clic sul pulsante allo stesso tempo ....
Justinas

Questo non è semplice o ragionevole.
ChiefTwoPencils
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.