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ąć?
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ąć?
Odpowiedzi:
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. Tam możesz określić szczegóły:
Przebiegi nie będą odbywać się równolegle, tylko kolejno.
Mam nadzieję, że to pomoże. Ale rozważ jMeter (spodoba ci się).
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/
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
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.
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
});
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
Jeśli wykonujesz tylko żądania GET i potrzebujesz innego prostego rozwiązania z poziomu przeglądarki Chrome, po prostu zainstaluj rozszerzenie „Otwórz wiele adresów URL”:
https://chrome.google.com/webstore/detail/open-multiple-urls/oifijhaokejakekmnjmphonojcfkpbbh?hl=en
Właśnie uruchomiłem 1500 adresów URL na raz, trochę opóźniłem Google, ale to działa.
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.