Postbote: So stellen Sie mehrere Anfragen gleichzeitig

182

Ich möchte Daten von der Postman Google Chrome-Erweiterung POSTEN.

Ich möchte 10 Anfragen mit unterschiedlichen Daten stellen und es sollte gleichzeitig sein.

Ist das bei Postman möglich?

Wenn ja, kann mir jemand erklären, wie dies erreicht werden kann?

user3384231
quelle

Antworten:

182

Ich denke, es gibt keine solche Funktion im Postboten, um gleichzeitige Tests durchzuführen.

Wenn ich Sie wäre, würde ich Apache jMeter in Betracht ziehen das genau für solche Szenarien verwendet wird.

In Bezug auf Postman ist das einzige, was Ihre Bedürfnisse mehr oder weniger erfüllen könnte - Postman Runner. Geben Sie hier die Bildbeschreibung ein Dort können Sie die Details angeben:

  • Anzahl der Iterationen,
  • Laden Sie eine CSV-Datei mit Daten für verschiedene Testläufe usw. hoch.

Die Läufe werden nicht gleichzeitig, sondern nur nacheinander ausgeführt.

Hoffentlich hilft das. Aber denken Sie an jMeter (Sie werden es lieben).

Yabko
quelle
7
Die Seite in Rays Kommentar wurde inzwischen auf Wordpress.com migriert. Hier ist ein funktionierender Link
Aaroninus
93

Postman macht das nicht, aber Sie können mehrere curlAnfragen in Bash asynchron ausführen :

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

Denken Sie daran, &nach jeder Anforderung eine hinzuzufügen, was bedeutet, dass die Anforderung als asynchroner Job ausgeführt werden sollte.

Postman kann jedoch ein Curl-Snippet für Ihre Anfrage generieren: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/

Daniel
quelle
3
Das ist großartig - ein so einfacher, großartiger Test für echtes asynchrones Verhalten.
Ghukill
Dies ist die beste Lösung
Shobi
39

Ich weiß nicht, ob diese Frage noch relevant ist, aber es gibt jetzt eine solche Möglichkeit bei Postman. Sie haben es vor ein paar Monaten hinzugefügt.

Sie müssen lediglich eine einfache .js-Datei erstellen und über node.js ausführen. Es sieht aus wie das:

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

Führen Sie dann einfach diese .js-Datei aus ('node fileName.js' in cmd).

Weitere Details hier

Volodymyr Popelniuk
quelle
9
Gibt es eine Möglichkeit, gleichzeitige Anforderungstests auch mit der Postman-Benutzeroberfläche durchzuführen, ohne das Befehlszeilentool newman zu verwenden?
Phil
Also habe ich diesen Code ausprobiert und es hat funktioniert, um die SAME collection_A auszuführen. Aber was ist, wenn ich zwei verschiedene Sammlungen (collection_A und collection_B) habe, die ich parallel ausführen möchte? Wie würde sich der Optionsparameter ändern? Hast du das versucht? Was dieses Labor sofort bereitstellt, scheint eher für einen Lasttest-Anwendungsfall zu sein, aber ich möchte mehrere Sammlungen parallel ausführen. wie collection_A und collection B parallel; irgendeine Idee?
Pelikan
4
Ich würde viel lieber ein Bash-Skript schreiben als diese .js-Datei
ttfreeman
4

Sie sind sich nicht sicher, ob die Benutzer noch nach einfachen Lösungen suchen, aber Sie können mehrere Instanzen des "Collection Runner" in Postman ausführen. Erstellen Sie einfach einen Runner mit einigen Anforderungen und klicken Sie mehrmals auf die Schaltfläche "Ausführen", um mehrere Instanzen aufzurufen.

Dan
quelle
Dies wird die Anfrage nicht parallel ausführen, wie in Frage gestellt
Vaibhav Sharma
4
Vaibhav; Jede Testläuferinstanz wird parallel ausgeführt.
RJFalconer
4

Führen Sie alle Sammlungen parallel in einem Ordner aus:

'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
});
Michael
quelle
4

In Collectionman's Collection Runner können Sie keine gleichzeitigen asynchronen Anforderungen stellen. Verwenden Sie stattdessen Apache JMeter . Sie können mehrere Threads hinzufügen und einen Synchronisierungs-Timer hinzufügen

Ashwath Hegde
quelle
-7

Öffnen Sie für einen einfacheren GUI-Ansatz jede Anforderung, die Sie ausführen möchten, auf verschiedenen Registerkarten. Dann können Sie zu jeder Registerkarte einen Klick ausführen.

Ronald
quelle
1
Die Frage ist im Begriff, parallele Anfragen
auszuführen
Es ist parallel nur leicht versetzt.
Ronald
2
Wenn Ihre Anfrage 0,05 Sekunden dauert, dann viel Glück beim Wechseln der Registerkarten und beim gleichzeitigen Klicken auf die Schaltfläche ....
Justinas
Dies ist nicht einfach oder vernünftig.
ChiefTwoPencils