我正在对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"
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
}
]}