2017-04-04 66 views
0

所以,這是問題所在。 我們現在用XML嘗試直接作爲數據源,像這樣:MsTest - XML數據源:您可以檢索整個XML作爲XElement嗎?

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", 
    @"Datasets\test01.xml", "test", DataAccessMethod.Sequential)] 

我(已經存在)的測試自動化框架是完全由解析,並與爲XElement參數傳遞測試數據的工作。

但是,看起來使用上面的代碼導致DataRow包含DataTable,這反過來將XML結構分解爲其各個子節點。另外,根據this discussion,XML應該包含一個表格(最多兩層)?

我想要實現的就是這樣,但是我錯過了DataRow和XElement對象之間的鏈接。

XElement xmlData = testContext.DataRow["login"]; 

所以,從這個XML,則返回login元素。編輯:這個元素本身將包含多個子節點(深度可以是多個級別)。

<test> 
     <login>...</login> 
     <actions>...</actions> 
    </test> 

回答

0

它的工作原理是這樣的。但是,問題是DataRow.Table當前返回的是整個XML,而不是所謂的當前數據行。

 using (var ms = new MemoryStream()) 
     { 
      testContext.DataRow.Table.WriteXml(ms); 
      var xmlData = XElement.Parse(Encoding.UTF8.GetString(ms.ToArray())); 
      Console.Write(xmlData.ToString()); 
      return xmlData.Element(rowName).Element(tag); 
     }