【问题标题】:How to accept HTTP 400 and HTTP 500 as valid response codes in Visual Studio Load Test?如何在 Visual Studio 负载测试中接受 HTTP 400 和 HTTP 500 作为有效响应代码?
【发布时间】:2014-08-20 09:53:16
【问题描述】:

我正在使用 Visual Studio 2013 Web 测试框架对 REST 服务进行压力测试。我想测量应用程序在 POST 请求中呈现病态/格式错误的 JSON 时的性能。服务器正在响应 HTTP 400 或 HTTP 500,我想同时考虑成功响应。

我尝试使用 pass-all 事件处理程序验证响应:

public class MalformedBodyTest : WebTest 
{
    private void Validate(object sender, ValidationEventArgs e)
    {
        e.IsValid = true;
    }

    public MalformedBodyTest()
    {
        this.ValidateResponse += Validate;
    }

    ...

}

这似乎没有任何区别,响应仍然显示为失败。使用 WebTestRequestExpectedHttpStatusCode 属性可以正常工作,但只能让我测试单个 HTTP 状态代码。

我希望仅在达到超时时才将请求视为失败。有没有办法实现这个功能?

【问题讨论】:

  • 闻起来像是一个糟糕且非常令人困惑的想法......

标签: c# visual-studio visual-studio-2013 load-testing


【解决方案1】:

好的,这实际上很简单。我错过了WebTestRequest 中还有一个属性IgnoreHttpStatusCode。通过在请求生成器中将其设置为true

public override IEnumerator<WebTestRequest> GetRequestEnumerator()
{
    for (var i = 0; i < Iterations; ++i)
    {
        var request = new WebTestRequest(_url);
        request.IgnoreHttpStatusCode = true;

        ...

        yield return request;
    }
}

然后我能够在验证处理程序中精确设置要接受和拒绝的 HTTP 状态代码:

private void Validate(object sender, ValidationEventArgs e)
{
    e.IsValid = (e.Response.StatusCode == HttpStatusCode.BadRequest ||
                 e.Response.StatusCode == HttpStatusCode.InternalServerError);
}

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2022-01-20
    • 2018-09-06
    • 2018-09-13
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多