Почтальон: как сделать несколько запросов одновременно


183

Я хочу отправить данные из расширения Почтальон Google Chrome.

Я хочу сделать 10 запросов с разными данными, и это должно быть одновременно.

Можно ли сделать такое в Почтальоне?

Если да, может кто-нибудь объяснить мне, как этого можно достичь?

Ответы:


182

Я думаю, что в почтальоне нет такой функции, чтобы запускать параллельные тесты.

На вашем месте я бы рассмотрел Apache jMeter, который используется именно для таких сценариев.

Что касается Почтальона, единственное, что может более или менее удовлетворить ваши потребности - это Почтальон Бегун. введите описание изображения здесь Там вы можете указать детали:

  • количество итераций,
  • загрузить CSV-файл с данными для различных тестовых прогонов и т. д.

Пробеги не будут параллельными, только последовательными.

Надеюсь, это поможет. Но подумайте о jMeter (вам это понравится).


7
Сайт в комментарии Рэя с тех пор мигрировал на Wordpress.com, вот рабочая ссылка
Ааронин

93

Почтальон не делает этого, но вы можете выполнять несколько curlзапросов асинхронно в Bash:

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

Не забудьте добавлять &после каждого запроса, что означает, что запрос должен выполняться как асинхронное задание.

Однако почтальон может сгенерировать фрагмент скручивания для вашего запроса: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/


3
Это великолепно - такой простой, отличный тест на истинное асинхронное поведение.
ghukill

Это лучшее решение
Шоби

40

Не знаю, актуален ли этот вопрос, но сейчас у Почтальона есть такая возможность. Они добавили это несколько месяцев назад.

Все, что вам нужно, это создать простой файл .js и запустить его через node.js. Это выглядит так:

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

Затем просто запустите этот файл .js («имя-файла-узла.js» в cmd).

Подробнее здесь


9
Есть ли способ добиться одновременного тестирования запросов с помощью пользовательского интерфейса почтальона, не используя инструмент командной строки newman?
фил

Итак, попробовал этот код, и он работал, чтобы запустить то же самое collection_A; но что если у меня есть 2 разные коллекции (collection_A и collection_B), которые я хочу запустить параллельно? Как изменится параметр параметров? Ты пробовал это? То, что эта лаборатория предоставляет «из коробки», похоже, больше подходит для варианта использования нагрузочного тестирования, но я хочу запустить несколько коллекций параллельно; как collection_A и коллекция B параллельно; любая идея?
пеликан

4
Я бы предпочел написать скрипт bash, а не этот файл .js
ttfreeman

5

В модуле сбора почтальонов нельзя одновременно выполнять асинхронные запросы, поэтому вместо этого используйте Apache JMeter . Позволяет добавить несколько потоков и добавить к нему таймер синхронизации.


4

Не уверен, что люди все еще ищут простые решения для этого, но вы можете запустить несколько экземпляров «Runner Collection» в Почтальоне. Просто создайте бегуна с некоторыми запросами и нажмите кнопку «Выполнить» несколько раз, чтобы вызвать несколько экземпляров.


Это не будет запускать запрос параллельно, как задано вопросом
Вайбхав Шарма

4
Vaibhav; каждый экземпляр теста запускается параллельно.
RJFalconer

4

Запустите всю коллекцию в папке параллельно:

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

2

Если вы выполняете только запросы GET и вам нужно другое простое решение из браузера Chrome, просто установите расширение «Открыть несколько URL-адресов»:

https://chrome.google.com/webstore/detail/open-multiple-urls/oifijhaokejakekmnjmphonojcfkpbbh?hl=en

Я только что запустил 1500 URL одновременно, немного запаздывал Google, но это работает.


-7

Для более простого подхода с графическим интерфейсом откройте каждый запрос, который вы хотите выполнить, на разных вкладках. Затем вы можете перейти к каждой вкладке одним щелчком мыши.


1
Вопрос о параллельных запросах
Вайбхав Шарма

Параллельно просто слегка шатается.
Рональд

2
Если ваш запрос принимает 0.05s, то хорошие вкладки переключения удачи и нажав кнопку одновременно ....
Justinas

Это не просто и не разумно.
ChiefTwoPencils
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.