2017-04-04 30 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); 
     } 
相关问题