抑制 "Response URL" 对单个请求的验证

Suppressing "Response URL" validation for individual requests

如何安排 Visual Studio Web 性能测试中响应 URL 的验证规则可以针对单个请求禁用?

删除验证规则很容易,但这意味着对测试中的任何请求都没有响应 url 验证。这些验证对于大多数请求来说很有用,因为它们提供了一个简单的验证,即测试没有做错事。但是,某些请求的响应 url 太复杂或太不可预测,无法在测试项目的时间限制内创建。 Web 测试中每个请求的属性包括响应 url。如果这些属性还包含一个布尔值 属性 用于检查或不检查响应 url 会很有用;每个请求还有其他几个布尔属性。

自定义验证规则can be written并且一个规则可以从另一个规则派生。这让我们可以创建一个规则来检查响应 url 验证是否需要,或者应该跳过特定请求。

[System.ComponentModel.Description(
    "Validate response URLs. "
    + "Calls standard validation rule except when the 'Response URL' property is '-', "
    + "in which case no validation is done.")]
public class ResponseUrlWithSkip : ValidateResponseUrl
{
    public override void Validate(object sender, ValidationEventArgs e)
    {
        if (string.IsNullOrEmpty(e.Request.ExpectedResponseUrl)
            || e.Request.ExpectedResponseUrl != "-")
        {
            base.Validate(sender, e);
        }
        else
        {
            e.WebTest.AddCommentToResult("Response URL validation skipped.");
        }
    }
}

以上代码检查响应 url 属性 是否为单个连字符(即 -),如果不是,则标准响应 url 规则是叫。选择 hyplen 并没有什么神奇之处。可以使用其他字符串,通过添加下面的声明并根据其值而不是 "-".

进行测试,可以将字符串作为验证规则的 属性 传递
public string Skip { get; set; }

要使用此验证规则,请从网络测试中删除正常规则并添加此新规则的调用。