Visual Studio:在 Web 性能测试中使用 csv 文件进行“查找文本”验证无效

Visual Studio: Use csv file for “Find Text” validation in web performance test not working

我正在使用 csv 文件发布数据并检查响应,在查找文本的位置,我想使用相同的 csv 文件。

我在字符串正文中使用 :{{DataSource1.Table#csv.objectId}} 这对于发布请求工作正常。 我在验证规则中传递了同样的东西,但它不起作用,我在这个验证规则中失败了。

在验证规则中,我使用 "Find Text" 并传递 {{DataSource1.Table#csv.objectId}}

"Details" 选项卡显示此验证规则:

查找文本验证 HTML 响应中未出现所需文本“{{DataSource1.Table#csv.objectId}}”。 FindText={{DataSource1.Table#csv.objectId}},IgnoreCase=True,UseRegularExpression=True,PassIfTextFound=True

尝试使用自定义验证规则并尝试传递上下文 parameter.Same issue.Validation 规则如下:

许多“.webtest”允许上下文参数 (CP) 的地方在 属性 上都有 "bind" 设施。例如,查看 "Header" 请求的 Value 属性,它有一个下拉列表,可以访问 CP。

“.webtest”的某些属性允许将 CP 嵌入到文本中。例如,请求的 Url 属性 允许 text{{CpOne}}moretext{{CpTwo}}etc.

不幸的是,“.webtest”的某些属性只允许文本并且不展开嵌入的 CP。我还没有找到任何明确的声明,说明哪些地方允许绑定 CP,哪些地方支持嵌入式 CP,哪些地方都不支持。此外,我还没有在用户编写的插件或提取规则或验证规则中发现任何对 CP 的内置支持。我的方法是在任何需要的地方尝试使用 CP,当它们不起作用时,编写我自己的代码来完成所需的工作。

您可以按照 this Microsoft page 中的描述编写您自己的验证规则。该代码可能基于以下代码尚未经过测试

public class FindCpValueInResponseBody : ValidateResponseUrl
{
    public string CpWithTextToFind { get; set; }

    public override void Validate(object sender, ValidationEventArgs e)
    {
        string TextToFind = e.WebTest.Context[CpWithTextToFind].ToString();

        e.WebTest.AddCommentToResult("Looking for '" + TextToFind +"' (from CP '" + CpWithTextToFind + "').");

        if (e.Response.BodyString.Contains(TextToFind))
        {
            e.IsValid = true;
            e.Message = "Text '" + TextToFind + "' found.";
        }
        else
        {
            e.IsValid = false;
            e.Message = "Text '" + TextToFind + "' not found.";
        }
    }
}

增强上述方法添加内置FindText验证规则的其他属性应该是一件简单的事情;如果需要 Pass if text foundIgnore case 等属性。

以上验证规则采用上下文参数名称。因此,如果该值来自数据源,则该值应该类似于 DataSource1.Table#csv.objectId。请注意,没有花括号(即没有 {}),也没有前导或尾随空格。