MsTest - XML 数据源:您能否将整个 XML 检索为 XElement?
MsTest - XML datasource: can you retrieve the entire XML as XElement?
那么,问题来了。
我们现在正在试验 XML 直接作为数据源,如下所示:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
@"Datasets\test01.xml", "test", DataAccessMethod.Sequential)]
我的(已经存在的)测试自动化框架完全可以解析和处理作为 XElement
参数传递的测试数据。
但是,使用上面的代码似乎会导致 DataRow
包含 DataTable
,而 DataTable
又将 XML 结构分解为其各个子节点。另外,根据 this discussion,XML 应该包含一个 table(最多两层深)?
我想要实现的就是这样,但是我缺少 DataRow 和 XElement 对象之间的 link。
XElement xmlData = testContext.DataRow["login"];
因此从这个 XML 返回 login
元素。编辑:此元素本身将包含多个子节点(深度可以是多个级别)。
<test>
<login>...</login>
<actions>...</actions>
</test>
它是这样工作的。但是,问题是 DataRow.Table
当前 returns 整个 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);
}
那么,问题来了。 我们现在正在试验 XML 直接作为数据源,如下所示:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
@"Datasets\test01.xml", "test", DataAccessMethod.Sequential)]
我的(已经存在的)测试自动化框架完全可以解析和处理作为 XElement
参数传递的测试数据。
但是,使用上面的代码似乎会导致 DataRow
包含 DataTable
,而 DataTable
又将 XML 结构分解为其各个子节点。另外,根据 this discussion,XML 应该包含一个 table(最多两层深)?
我想要实现的就是这样,但是我缺少 DataRow 和 XElement 对象之间的 link。
XElement xmlData = testContext.DataRow["login"];
因此从这个 XML 返回 login
元素。编辑:此元素本身将包含多个子节点(深度可以是多个级别)。
<test>
<login>...</login>
<actions>...</actions>
</test>
它是这样工作的。但是,问题是 DataRow.Table
当前 returns 整个 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);
}