Listonosz: jak wysyłać wiele żądań w tym samym czasie

182

Chcę POST dane z rozszerzenia Postman Google Chrome.

Chcę złożyć 10 żądań z różnymi danymi i powinno to być w tym samym czasie.

Czy można to zrobić w Postman?

Jeśli tak, czy ktoś może mi wyjaśnić, w jaki sposób można to osiągnąć?

user3384231
źródło

Odpowiedzi:

182

Wydaje mi się, że listonosz nie ma takiej funkcji, jak uruchamianie równoległych testów.

Na twoim miejscu rozważyłbym Apache jMeter, który jest używany dokładnie w takich scenariuszach.

Jeśli chodzi o Listonosza, jedyną rzeczą, która może mniej lub bardziej zaspokoić Twoje potrzeby, jest - Postman Runner. wprowadź opis obrazu tutaj Tam możesz określić szczegóły:

  • liczba iteracji,
  • prześlij plik csv z danymi dla różnych przebiegów testowych itp.

Przebiegi nie będą odbywać się równolegle, tylko kolejno.

Mam nadzieję, że to pomoże. Ale rozważ jMeter (spodoba ci się).

Yabko
źródło
7
Witryna w komentarzu Ray jest od migracji do Wordpress.com, tu jest link działa
Aaroninus
93

Postman tego nie robi, ale możesz uruchamiać wiele curlżądań asynchronicznie w Bash:

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

Pamiętaj, aby dodać &po każdym żądaniu, co oznacza, że ​​żądanie powinno być uruchamiane jako zadanie asynchroniczne.

Listonosz może jednak wygenerować fragment kodu curl dla Twojego żądania: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/

Daniel
źródło
3
To jest genialne - taki prosty, świetny test na prawdziwe zachowanie asynchroniczne.
ghukill
To najlepsze rozwiązanie
Shobi
39

Nie wiem, czy to pytanie jest nadal aktualne, ale teraz w Postmanie jest taka możliwość. Dodali to kilka miesięcy temu.

Wystarczy, że utworzysz prosty plik .js i uruchomisz go za pośrednictwem node.js. To wygląda tak:

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

Następnie po prostu uruchom ten plik .js („nazwa_pliku węzła.js” w cmd).

Więcej szczegółów tutaj

Volodymyr Popelniuk
źródło
9
Czy istnieje sposób na przeprowadzenie równoczesnego testowania żądań za pomocą interfejsu użytkownika listonosza bez użycia narzędzia wiersza poleceń newman?
phil
Więc wypróbowałem ten kod i zadziałało, aby uruchomić SAME COLLECTION_A; ale co, jeśli mam 2 różne kolekcje (kolekcja_A i kolekcja_B), które chcę równolegle uruchamiać? Jak zmieniłby się parametr Options? Próbowałeś tego? To, co dostarcza laboratorium po wyjęciu z pudełka, wydaje się być bardziej przydatne w przypadku testowania obciążenia, ale chcę równolegle uruchamiać wiele kolekcji; podobnie jak kolekcja_A i kolekcja B równolegle; dowolny pomysł?
pelikan
4
Wolałbym raczej napisać skrypt basha niż ten plik .js
ttfreeman
4

Nie jestem pewien, czy ludzie nadal szukają prostego rozwiązania tego problemu, ale możesz uruchomić wiele instancji „Collection Runner” w programie Postman. Po prostu utwórz runnera z kilkoma żądaniami i kliknij kilkakrotnie przycisk „Uruchom”, aby wyświetlić wiele instancji.

Dan
źródło
To nie będzie działać równolegle z żądaniami, jak zadano w pytaniu
Vaibhav Sharma
4
Vaibhav; każda instancja modułu uruchamiającego testy będzie działać równolegle.
RJFalconer
4

Uruchom całą kolekcję w folderze równolegle:

'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
źródło
4

W programie do uruchamiania kolekcji listonosza nie można wykonywać jednoczesnych żądań asynchronicznych, więc zamiast tego użyj Apache JMeter . Pozwala na dodawanie wielu wątków i dodawanie do niego zegara synchronizacji

ashwath hegde
źródło
-7

Aby uzyskać prostsze podejście do GUI, otwórz każde żądanie, które chcesz uruchomić, na różnych kartach. Następnie możesz przejść do każdej karty i uruchomić kliknięcie.

Ronald
źródło
1
Pytanie ma uruchomić równoległe żądania
Vaibhav Sharma
Jest równolegle tylko nieznacznie przesunięty.
Ronald
2
Jeśli Twój wniosek bierze 0.05s, a następnie dobre występy przełączania szczęśliwie Kliknięcie przycisku w tym samym czasie ....
Justinas
To nie jest proste ani rozsądne.
ChiefTwoPencils