POSTman-使用自定义函数进行测试会引发断言错误

我正在对Postman分析JSON文件进行一些测试。我意识到大多数时候我最终都会对一堆属性进行相同的测试,所以我决定制作一个自定义函数并将其作为参数添加到测试中。

一旦我这样做,每当断言失败时,它将抛出断言错误而不是使测试本身失败。该测试不会出现在“测试结果”窗口中。

它在断言成功时起作用。测试通过并显示在“测试结果”窗口中。

它可以在没有自定义功能的情况下工作,但是在那种情况下,每个测试都将具有自己的功能,并且使用相同的代码行,这就是我要避免的事情。

function myFunction(propertyName,testData) {
    {   
            return pm.expect(testData).to.have.property(propertyName);
    }
}

var data = JSON.parse(responseBody);

var testData = data.entries;
/*TESTS USING CUSTOM FUNCTION*/
for (var i = 0; i < 5; i++) { 
    try{
    //This test PASSES and shows in the Test Results window.
        pm.test("test1",myFunction('summonerId',testData[i])); 
    }catch(error){
        console.log(error);
    }
    try{
    //This test PRODUCES AN ERROR and DOEsn'T shows in the Test Results window.
        pm.test("test2",myFunction('somethingElse',testData[i])); 

    }catch(error){
        console.log(error);
    }
 }
/*TESTS USING ONE FUNCTION PER TEST*/
for (var i = 0; i < 5; i++) { 

    try{
    //This test PASSES and shows in the Test Results window.
        pm.test("test1",function(){
           pm.expect(testData).to.have.property('summonerId'); 
        }); 

    }catch(error){
        console.log(error);
    }
    try{
    //This test FAILS and shows in the Test Results window,without errors
        pm.test("test2",function(){
            pm.expect(testData).to.have.property('somethingElse'); 
        });
    }catch(error){
        console.log(error);
    }
 }

因此,当使用自定义函数时,如果断言成功,则一切都很好,并且测试显示为“通过”,但是如果断言失败,则抛出错误而不是使测试失败,并且测试未显示为'失败”。

断言错误:

message: "expected { Object (summonerId,summonerName,...) } to have property 'somethingElse'"
name: "AssertionError"
showDiff: false
stack: "AssertionError: expected { Object (summonerId,...) } to have property 'somethingElse'
    at myFunction (eval at exec (evalmachine.<anonymous>:13040:2548),<anonymous>:9:52)
    at Object.eval (eval at exec (evalmachine.<anonymous>:13040:2548),<anonymous>:24:30)
    at Uniscope.exec (evalmachine.<anonymous>:13040:2583)
    at module.exports (evalmachine.<anonymous>:69:538)
    at Object.<anonymous> (evalmachine.<anonymous>:72:1871)
    at evalmachine.<anonymous>:16:26
    at Array.forEach (<anonymous>)
    at Object.emit (evalmachine.<anonymous>:15:54)
    at evalmachine.<anonymous>:52:24
    at evalmachine.<anonymous>:5:21"

POSTman-使用自定义函数进行测试会引发断言错误

总测试显示15个测试。 10通过5失败。

5个测试丢失(使用自定义功能时应该失败的测试)。

{
    "tier": "CHALLENGER","leagueId": "65ebcd4f-368c-30f6-a635-976beb0e1a8c","queue": "RANKED_SOLO_5x5","name": "Varus's Outriders","entries": [
        {
            "summonerId": "bPZhuLrFtF8ntu6a3JfnYNFX-NfG0LFX7aelPDd2Xegav-MM","summonerName": "dang qiu qian","leaguePoints": 739,"rank": "I","wins": 162,"losses": 130,"veteran": true,"inactive": false,"freshBlood": false,"hotStreak": false
        },{
            "summonerId": "gk0lUIs1j9pMAWxa723hurPSDXAGbaXFJRdfek9WfQvWURA","summonerName": "DV1 Matislaww","leaguePoints": 795,"wins": 757,"losses": 680,"veteran": false,"hotStreak": false
        }
]}
largehand 回答:POSTman-使用自定义函数进行测试会引发断言错误

在这篇帖子Postman AssertionError when testing using a defined function中,我对@prateeksarda表示感谢。

实际上,调用函数的方式有所不同。 如果不是在显式调用中而是在回调中调用它,则结果将是正确的。

for (var i = 0; i < 5; i++) { 

        pm.test("test1",function(){
            myFunction('summonerId',testData[i])
        }); //This test PASSES and shows in the Test Results window.

        pm.test("test2",function(){
            myFunction('somethingElse',testData[i])
        }); //This test FAILS and shows in the Test Results window. :)

 }

这就像一种魅力。

本文链接:https://www.f2er.com/3149651.html

大家都在问