我正在使用csv文件发布数据并检查回响应,在查找文本中,我想使用相同的csv文件。
在字符串主体im中使用:{{DataSource1.Table#csv.objectId}}可以很好地发布请求。 我在验证规则中输入查找文本时传递的同样内容,它不起作用,并且此验证规则失败。
在验证规则中,我正在使用“查找文本”并传递{{DataSource1.Table#csv.objectId}}
“详细信息”标签为验证规则显示以下内容:
查找文本验证所需的文本'{{DataSource1.Table#csv.objectId}}'未出现在HTML响应中。 FindText = {{DataSource1.Table#csv.objectId}},IgnoreCase = True,UseRegularExpression = True,PassIfTextFound = True
尝试使用自定义验证规则并尝试传递上下文参数。相同的问题。其验证规则如下:
答案 0 :(得分:0)
“。webtest”允许上下文参数(CP)的许多地方在属性上都有“绑定”功能。例如,查看请求的“标头”的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
。请注意,没有大括号(即没有{
或}
),也没有前导或尾随空格。