2017-03-24 4 views
0

Wenn Sie die Sammlung Runner (oder Newman) verwenden, können Sie die Anzahl der Iterationen angeben. Die Iterationen werden alle nacheinander ausgeführt. Gibt es eine Möglichkeit innerhalb des Tools, Tests/Iterationen parallel zu konfigurieren? Ich habe dies mit einer einfachen Schleife in einem Knotenscript unter Verwendung von Newman getan, aber dann werden die Ergebnisse alle übereinander geschrieben.Führen Sie Postman (oder Newman) Collection Runner Iterationen parallel

+0

Soweit ich weiß, parallel Tests sind weder von Postman oder Newman noch unterstützt. –

Antwort

0

Die einzige Möglichkeit, die ich bisher gefunden habe, besteht darin, benutzerdefinierten Knotencode zu schreiben, um mehrere newman.run-Prozesse zu starten, und dann alle Ergebnisse zu aggregieren, die diese Prozesse zurückgeben. Hier

ein Beispiel:

const 
    newman = require('newman'); 
    config = require('./postman-config.js').CONFIG, 
    collectionPath = 'postman-collection.json', 
    iterationCount = 5, 
    threadCount = 5, 
    after = require('lodash').after; 

exports.test = function() { 
    // Use lodash.after to wait till all threads complete before aggregating the results 
    let finished = after(threadCount, processResults); 
    let summaries = []; 
    console.log(`Running test collection: ${collectionPath}`); 
    console.log(`Running ${threadCount} threads`); 
    for (let i = 0; i < threadCount; i++) { 
    testThread(summaries, finished, collectionPath); 
    } 

}; 

function processResults(summaries) { 
    let sections = ['iterations', 'items', 'scripts', 'prerequests', 'requests', 'tests', 'assertions', 'testScripts', 'prerequestScripts']; 
    let totals = summaries[0].run.stats; 
    for (let i = 1; i < threadCount; i++) { 
    let summary = summaries[i].run.stats; 
    for (let j = 0; j < sections.length; j++) { 
     let section = sections[j]; 
     totals[section].total += summary[section].total; 
     totals[section].pending += summary[section].pending; 
     totals[section].failed += summary[section].failed; 
    } 
    } 
    console.log(`Run results: ${JSON.stringify(totals, null, 2)}`); 
} 

function testThread(summaries, callback, collectionPath) { 
    console.log(`Running ${iterationCount} iterations`); 
    newman.run({ 
    iterationCount: iterationCount, 
    environment: config, 
    collection: require(collectionPath), 
    reporters: [] 
    }, function (err, summary) { 
    if (err) { 
     throw err; 
    } 
    console.log('collection run complete'); 
    summaries.push(summary); 
    callback(summaries); 
    }); 
} 
Verwandte Themen