所以,这就是问题所在。 我们现在正在尝试使用XML作为数据源,如下所示:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
@"Datasets\test01.xml", "test", DataAccessMethod.Sequential)]
我的(已经存在的)测试自动化框架完全用于解析和处理作为XElement
参数传递的测试数据。
但是,似乎使用上面的代码会导致DataRow
包含DataTable
,而XElement xmlData = testContext.DataRow["login"];
会将XML结构分解为各个子节点。另外,根据this discussion,XML应该包含一个表(最多两层)?
我想要实现的就是这样,但是我错过了DataRow和XElement对象之间的链接。
login
因此,从此XML中返回 <test>
<login>...</login>
<actions>...</actions>
</test>
元素。编辑:此元素本身将包含多个子节点(深度可以是多个级别)。
val flights: Seq[Flight] = ...
// Let's represent the result in a Map[Airport, (Left, Arrived)]
val res: Map[String, (Int, Int)] =
flights
.flatMap(flight => Seq((flight.origin, true), (flight.destination, false))) // Seq[(String, Boolean)]
.groupBy { case (airport, _) => airport } // Map[String, List[(String, Boolean)]]
.mapValues { grouped =>
val left = grouped.count { case (_, isOrigin) => isOrigin }
val arrived = grouped.count { case (_, isOrigin) => !isOrigin }
(left, arrived)
}
答案 0 :(得分: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);
}