2014-10-10 87 views
4

我已經創建了自定義提取規則和屬性,我需要的屬性是數據驅動,即我想附加數據源(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:文本框旁邊名稱屬性

enter image description here

我該如何製作數據驅動?就像一個同時插入FormPost參數,我們得到...這裏是

enter image description here

注意其拉起連接數據源的下拉按鈕右下角......我想要的名稱屬性值是例子附加到相同的數據源....我怎麼去呢?

回答

3

。我無法將CSV文件列綁定到提取規則屬性,但是我得到了解決方法。這裏就是我失蹤

[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步:在您的自定義提取規則訪問上下文參數的值

public override void Extract(object sender, ExtractionEventArgs e) 
    { 
     string ProcessIDinCSvFile = e.WebTest.Context["MyProcessInstanceID"].ToString()); 
+0

請您澄清一下:Web測試數據是否被驅動?或者,你是否試圖數據驅動提取規則。我在DataBindingAttribute中找到的Microsoft文檔表明,它是一個內部類,用於協助創建測試,而不是用於普通代碼。你在哪裏,或者如何發現了使用這個屬性? – AdrianHHH 2014-10-17 07:48:45

+2

@Adrian:是的網絡測試是數據驅動的。還有其他列,我需要使用提取規則。我花了幾個小時在MSDN上查找信息Kb Article也嘗試了許多排列組合和ExtractionEventArgs的所有方法和屬性,但它沒用。最後,當我從我的Web測試生成代碼時,我發現它。我添加了DataBinding屬性,並且我打了本壘打.... – 2014-10-17 11:14:13

+0

@AdrianHHH:按照您的建議,我創建了一個新問題。你能幫助這裏是一個問題的鏈接:http://stackoverflow.com/questions/29605846/can-visual-studio-2012-load-testing-capture-performance-counters-of-linux-server – 2015-04-14 06:10:34

0

若要將上下文參數設置爲字段中的文本,只需在字段中輸入數據源字段的全名,該數據源字段用雙花括號括起來。正確形式的文本在問題的圖像中顯示爲紅色,即{{DataSource1.mycsvfile#csv.ProcessInstanceID}}

數據源字段也可以直接從上下文由代碼訪問諸如

string theText = e.WebTest.Context["DataSource1.mycsvfile#csv.ProcessInstanceID"].ToString(); 

如果提取規則的Name字段被設置爲一個內容參數的名稱(即,不給它的值)那麼當前值可以讀出一個新的價值花費很多時間我能得到從CSV文件中的值到我的自定義抽取規則後最後插入代碼像

string theText = e.WebTest.Context[Name].ToString(); 
e.WebTest.Context[Name] = "The new string"; 
+2

感謝您的答覆....提出的解決方案也怎麼過不起作用。我嘗試通過使用「{{DataSource1.mycsvfile#csv.ProcessInstanceID}}」將數據源字段添加到Name屬性,並且該dint適用於我。還嘗試向webtest添加上下文參數,並嘗試通過提供「{{DataSource1.mycsvfile#csv.ProcessInstanceID}}」將上下文參數的值綁定到數據源字段,但該功能也適用。 看來,提取規則的Context參數和Name屬性只接受字符串值。 – 2014-10-13 09:29:37

+0

我發現你的問題不是很清楚,所以寫了一個合理的答案。評論說:「*這個功能對我來說很有用」,也很模糊。發生了什麼,你期望什麼?我發現添加'e.WebTest.AddCommentToResult(...)'調用對於理解正在發生的事情非常有用。 – AdrianHHH 2014-10-13 13:09:39

+2

我的意思是當我使用「{{DataSource1.mycsvfile#csv.ProcessInstanceID}}」我沒有獲得CSV文件中的值....我期待的價值被返回,就像「Abc1234」... 。但在運行時的值是「{{DataSource1.mycsvfile#csv.ProcessInstanceID}}」.. 這裏是更多的描述...我想自定義提取規則的名稱屬性是數據綁定... – 2014-10-13 14:05:45

相關問題