邮递员:如何同时发出多个请求


181

我想发布Postman Google Chrome扩展程序中的数据。

我想用不同的数据发出10个请求,并且应该同时进行。

邮递员有可能这样做吗?

如果可以,谁能向我解释如何实现?

Answers:


181

我想邮递员中没有运行并发测试的功能。

如果我是您,我会考虑使用Apache jMeter完全用于此类情况。

关于邮递员,唯一可以或多或少满足您需求的是-邮递员赛跑者。 在此处输入图片说明 您可以在此处指定详细信息:

  • 迭代次数,
  • 上载具有不同测试运行数据的csv文件等。

运行不会是并行的,只能是连续的。

希望有帮助。但是请考虑使用jMeter(您会喜欢的)。


7
Ray评论中的网站此后已迁移到Wordpress.com,这是一个有效的链接
Aaroninus

93

Postman不会这样做,但是您可以curl在Bash中异步运行多个请求:

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

请记住,&在每个请求之后添加一个,这意味着该请求应作为异步作业运行。

但是,邮递员可以为您的请求生成curl片断:https : //learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/


3
这真是太好了-对真正的异步行为进行如此简单,出色的测试。
ghukill

这是最好的解决方案
Shobi

39

我不知道这个问题是否仍然有用,但是现在邮递员中就有这种可能性。他们在几个月前添加了它。

您需要做的只是创建一个简单的.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文件(cmd中的“ node fileName.js”)即可。

在这里更多细节


9
是否有一种方法也可以使用postman ui进行并发请求测试而无需使用命令行工具newman?
菲尔

因此尝试了这段代码,并成功运行了SAME collection_A; 但是如果我想并行运行2个不同的集合(collection_A和collection_B)怎么办?options参数将如何变化?你试过这个吗?该实验室提供的开箱即用功能似乎更多用于负载测试用例,但我想并行运行多个集合。像collection_A和collection B并行;任何想法?
鹈鹕

4
我更愿意编写一个bash脚本而不是该.js文件
ttfreeman

4

不知道人们是否仍在寻找简单的解决方案,但是您可以在Postman中运行“ Collection Runner”的多个实例。只需创建带有某些请求的运行器,然后多次单击“运行”按钮即可启动多个实例。


这不会像所问的那样并行运行请求
Vaibhav Sharma

4
Vaibhav; 每个测试运行器实例将并行运行。
RJFalconer

4

并行运行一个文件夹中的所有Collection:

'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

对于更简单的GUI方法,请在不同的选项卡中打开要运行的每个请求。然后,您可以转到每个选项卡,然后单击运行。


1
问题是要同时执行请求
Vaibhav Sharma,

它是并行的,只是有些交错。
罗纳德

2
如果您的请求需要0.05秒,那么请同时切换选项卡和单击按钮....
Justinas

这不是简单或合理的。
ChiefTwoPencils
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.