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?

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).


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/


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


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.


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

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



-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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.