Листоноша: як зробити кілька запитів одночасно


182

Я хочу , щоб дані POST від Листоноша розширення 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

Це найкраще рішення
Шобі

39

Я не знаю, чи все-таки це питання актуальне, але така можливість є і у Postman. Вони додали його кілька місяців тому.

Все, що вам потрібно, це створити простий .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 файл ('node fileName.js' в cmd).

Детальніше тут


9
Чи є спосіб домогтися одночасного тестування запитів і з листоношею, без використання інструмента командного рядка newman?
філ

Тому спробував цей код, і він працював для запуску колекції SAME_A; але що робити, якщо у мене є дві різні колекції (collection_A та collection_B), які я хочу працювати паралельно? Як змінився би параметр параметрів? Ви спробували це? Те, що ця лабораторія надає поза коробкою, здається, більше для випадку використання тестування навантаження, але я хочу запускати кілька колекцій паралельно; як collection_A і колекція B паралельно; будь-яка ідея?
пелікан

4
Я б набагато скоріше написати сценарій bash, ніж той .js файл
ttfreeman

4

Не впевнений, чи люди все ще шукають простих рішень для цього, але ви в змозі запустити кілька примірників "Збірника бігуна" у "Поштальона". Просто створіть бігун з деякими запитами та натисніть кнопку "Виконати" кілька разів, щоб відкрити кілька примірників.


Це не буде запускати запит паралельно, як було задано питання
Vaibhav Sharma,

4
Вайбхав; кожен екземпляр тестового бігуна буде працювати паралельно.
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
});

4

У колекціонері листоноші не можна одночасно робити асинхронні запити, тому замість цього використовуйте Apache JMeter . Це дозволяє додавати кілька потоків і додавати до нього таймер синхронізації


2

Якщо ви робите лише запити GET і вам потрібно інше просте рішення з вашого браузера Chrome, просто встановіть розширення "Відкрити кілька URL-адрес":

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

Я щойно запустив 1500 URL-адрес відразу, трохи відставав у Google, але це працює.


-7

Для більш простого підходу GUI відкрийте кожен запит, який потрібно запустити на різних вкладках. Потім ви можете перейти до кожної вкладки, натиснувши прогон.


1
Питання збирається виконати паралельні запити
Vaibhav Sharma

Він паралельно просто злегка ступає.
Рональд

2
Якщо ваш запит приймає 0.05s, то хороші вкладки перемикання удачі і натиснувши кнопку одночасно ....
Justinas

Це не просто і розумно.
ChiefTwoPencils
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.