繁体   English   中英

如何使自定义提取规则属性数据驱动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM