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 found
和 Ignore case
等属性。
以上验证规则采用上下文参数名称。因此,如果该值来自数据源,则该值应该类似于 DataSource1.Table#csv.objectId
。请注意,没有花括号(即没有 {
或 }
),也没有前导或尾随空格。
我正在使用 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 found
和 Ignore case
等属性。
以上验证规则采用上下文参数名称。因此,如果该值来自数据源,则该值应该类似于 DataSource1.Table#csv.objectId
。请注意,没有花括号(即没有 {
或 }
),也没有前导或尾随空格。