最近,我受命在WebLOAD中工作,以测试API的功能。由于项目的要求,因此无法将WebLOAD的替代方法用于该任务。

我编写的一些测试用例涉及提交格式错误的请求,并确保返回了400个响应代码。我的问题是,每次收到非200响应时,wlHttp都会在控制台中引发错误并中止当前回合。

我尝试用try / catch包围wlHttp.Get调用,但这没有用。非常感谢任何帮助,因为从this document判断,似乎应该可以在收到非200状态代码后继续。

以下是与我为测试用例编写的代码类似的MVP。在控制台输出中(在MVP下方),您可以看到记录了“ 1”,但是在记录了关于400的错误且从未运行过console.log("2")之后,立即停止了执行。

function InitAgenda() {
    wlGlobals.GetFrames = false;
    wlGlobals.SaveSource = true;
    wlGlobals.SaveHeaders = true;
}

/***** WLIDE - ID:5 - JavaScript *****/

wlHttp.ContentType = "application/json";

console.log("1");
wlHttp.Get("https://httpstat.us/400");
console.log("2");

// END WLIDE


0.00        *** Script Execution Start Time:  Thu Aug 15 17:15:56 2019 ***
0.33        Start round 1 (1 of 1)
0.34        1
0.76        400 Bad request. Requested URL: https://httpstat.us/400. in main_agenda at line 15
1.85        End round 1 (1 of 1)
2.06        *** Script Execution End Time:  Thu Aug 15 17:15:58 2019 ***
2.06        Test Failed: The number of errors is equal to or greater than 1.

最佳答案

您应该使用wlHttp.ReportHttpErrors=false

使用document.wlStatusNumber检查响应。

参见示例:

function InitAgenda()
{

wlGlobals.GetFrames = false;
    wlGlobals.SaveSource = true;
    wlGlobals.SaveHeaders = true;
}
/***** WLIDE - ID:5 - JavaScript *****/

wlHttp.ContentType = "application/json";

console.log("1");
wlHttp.ReportHttpErrors=false
wlHttp.Get("https://httpstat.us/400");
if (document.wlStatusNumber != 400) {
    WarningMessage("hmm, expected 400 but got " + document.wlStatusNumber + ", " + document.wlStatusLine)
}
console.log("2");

10-06 06:46