[英]how to make custom extraction rule property data driven?
我已创建自定义提取规则和属性我需要属性是数据驱动,即我想附加数据源(CSV文件)。 我该怎么办呢?
以下是描述问题的屏幕截图和代码片段
自定义提取规则类的代码段
public class CustomeExtractionClass : ExtractionRule
{
public string Name
{
get;
set;
}
public override void Extract(object sender, ExtractionEventArgs e)
{
// Code to extract text/values from Response Based On NAME(i.e. Property) value
received from UI
}
}
Name属性的UI
注意:Name属性旁边的文本框
如何使其数据驱动? 就像我们在插入FormPost参数时得到的那样...这是示例
请注意右下角的下拉按钮,它会拉出附加的数据源...我希望将Name属性值附加到同一个数据源....我该怎么办呢?
最后花了好几个小时后,我能够将CSV文件中的值输入到我的自定义提取规则中。 我无法将CSV文件列绑定到Extraction规则属性,但是我得到了解决方法。 这就是我所缺少的
[DataBinding("DataSource1", "mycsvfile#csv", "ProcessInstanceID", "MyProcessInstanceID")]
这是实现它的步骤
步骤1:将数据源添加到WebTest(如果已添加,则跳过)
第2步:从WebTest生成代码(如果已经完成,请跳过)
步骤3:通过在webtest类的声明上方添加以下代码行来绑定数据源(即CSV文件)列。
[DataSource("DataSource1", "Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\customextractionrule\\mycsvfile.csv", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, Microsoft.VisualStudio.TestTools.WebTesting.DataBindingSelectColumns.SelectOnlyBoundColumns, "mycsvfile#csv")]
[DataBinding("DataSource1", "mycsvfile#csv", "ProcessInstanceID", "MyProcessInstanceID")]
public class WebTest2Coded : WebTest
{
注意:在上面的代码中, “MyProcessInstanceID”是将由visual studio创建的上下文参数的名称,CSV文件列的值将分配给此上下文参数。 你可以给出你想要的任何名字。
步骤4:在自定义提取规则中访问Context参数的值
public override void Extract(object sender, ExtractionEventArgs e)
{
string ProcessIDinCSvFile = e.WebTest.Context["MyProcessInstanceID"].ToString());
要将上下文参数设置为字段中的文本,只需在字段中输入用双花括号括起来的数据源字段的全名。 正确的文本形式在问题中的图像中以红色圆圈显示,即{{DataSource1.mycsvfile#csv.ProcessInstanceID}}
。
也可以通过代码直接从上下文访问数据源字段
string theText = e.WebTest.Context["DataSource1.mycsvfile#csv.ProcessInstanceID"].ToString();
如果提取规则的Name
字段设置为内容参数的名称(即不是其值),则可以读出当前值并插入一个新值,如下所示
string theText = e.WebTest.Context[Name].ToString();
e.WebTest.Context[Name] = "The new string";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.