Я провожу тест с почтальоном, анализируя файлы 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);
}
}
Так что при использовании пользовательской функции, если утверждение успешно, все в порядке, и тест отображается как PASSED, НО, если утверждение не выполнено, он выдает ошибку вместо того, чтобы провалить тест,и тест не отображается как «НЕИСПРАВНЫЙ».
ОШИБКА АСПЕКТА:
message: "expected { Object (summonerId, summonerName, ...) } to have property 'somethingElse'"
name: "AssertionError"
showDiff: false
stack: "AssertionError: expected { Object (summonerId, summonerName, ...) } 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"
Всего тест показывает 15 тестов. 10 PASSED 5 FAILED.
5 тест отсутствует (те, которые должны FAIL, при использовании пользовательской функции).
{
"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,
"rank": "I",
"wins": 757,
"losses": 680,
"veteran": false,
"inactive": false,
"freshBlood": false,
"hotStreak": false
}
]}