Facteur: comment faire plusieurs demandes en même temps


183

Je souhaite publier des données depuis l' extension Postman Google Chrome.

Je veux faire 10 demandes avec des données différentes et cela devrait être en même temps.

Est-il possible de faire cela dans Postman?

Si oui, quelqu'un peut-il m'expliquer comment y parvenir?

Réponses:


182

Je suppose qu'il n'y a pas de fonctionnalité dans Postman pour exécuter des tests simultanés.

Si j'étais vous, je considérerais Apache jMeter qui est utilisé exactement pour de tels scénarios.

En ce qui concerne Postman, la seule chose qui pourrait plus ou moins répondre à vos besoins est - Postman Runner. entrez la description de l'image ici Là, vous pouvez spécifier les détails:

  • nombre d'itérations,
  • télécharger un fichier csv avec des données pour différentes exécutions de test, etc.

Les courses ne seront pas simultanées, seulement consécutives.

J'espère que cela pourra aider. Mais pensez à jMeter (vous allez l'adorer).


7
Le site dans le commentaire de Ray a depuis migré vers Wordpress.com, voici un lien de travail
Aaroninus

93

Postman ne fait pas cela, mais vous pouvez exécuter plusieurs curlrequêtes de manière asynchrone dans Bash:

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

N'oubliez pas d'ajouter un &après chaque demande, ce qui signifie que la demande doit s'exécuter en tant que travail asynchrone.

Postman peut cependant générer un extrait de curl pour votre demande: https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/


3
C'est génial - un test si simple et génial pour un véritable comportement asynchrone.
ghukill

C'est la meilleure solution
Shobi le

40

Je ne sais pas si cette question est toujours d'actualité, mais il y a une telle possibilité dans Postman maintenant. Ils l'ont ajouté il y a quelques mois.

Tout ce dont vous avez besoin est de créer un fichier .js simple et de l'exécuter via node.js. Cela ressemble à ceci:

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

Ensuite, exécutez simplement ce fichier .js ('node fileName.js' dans cmd).

Plus de détails ici


9
Existe-t-il également un moyen de réaliser des tests de requêtes simultanées avec l'interface utilisateur de postman sans utiliser l'outil de ligne de commande newman?
phil

J'ai donc essayé ce code et cela a fonctionné pour exécuter la même collection_A; mais que faire si j'ai 2 collections différentes (collection_A et collection_B) que je veux exécuter en parallèle? Comment le paramètre d'options changerait-il? Avez-vous essayé ça? Ce que ce laboratoire fournit prêt à l'emploi semble être plus pour un cas d'utilisation de test de charge, mais je veux exécuter plusieurs collections en parallèle; comme collection_A et collection B en parallèle; une idée?
pélican

4
Je préférerais de beaucoup écrire un script bash que ce fichier .js
ttfreeman

5

Dans le coureur de collecte de postman, vous ne pouvez pas effectuer de requêtes asynchrones simultanées, utilisez plutôt Apache JMeter à la place. Il vous permet d'ajouter plusieurs threads et d'y ajouter une minuterie de synchronisation


4

Je ne sais pas si les gens recherchent toujours des solutions simples à ce problème, mais vous pouvez exécuter plusieurs instances du "Collection Runner" dans Postman. Créez simplement un coureur avec quelques demandes et cliquez plusieurs fois sur le bouton "Exécuter" pour faire apparaître plusieurs instances.


Cela ne fonctionnera pas en parallèle comme demandé en question
Vaibhav Sharma

4
Vaibhav; chaque instance de test runner s'exécutera en parallèle.
RJFalconer

4

Exécutez toute la collection dans un dossier en parallèle:

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


-7

Pour une approche GUI plus simple, ouvrez chaque requête que vous souhaitez exécuter dans différents onglets. Ensuite, vous pouvez accéder à chaque onglet un clic.


1
La question est sur le point d'exécuter des requêtes parallèles
Vaibhav Sharma

Il est en parallèle légèrement décalé.
Ronald

2
Si votre demande prend 0,05 s, alors bonne chance en changeant d'onglet et en cliquant sur le bouton en même temps ....
Justinas

Ce n'est ni simple ni raisonnable.
ChiefTwoPencils
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.