创建 CSV 文件。将 CSV 文件添加到项目中。确保已部署 CSV 文件。将 CSV 文件添加为单个测试的数据源。阅读 CSV 字段并在测试中使用它们。下面解释了详细的步骤,以及一些变化。
Visual Studio 2010 有一个“数据源向导”来执行其中的一些步骤。Visual Studio 2012 和 2013 版没有向导,因此所有步骤都必须手动完成。
创建 CSV 文件
一种方法是在电子表格中创建文件,然后将其保存为逗号分隔值。另一种方法是使用文本编辑器并只编写文件。我使用电子表格程序处理大数据源文件,使用文本编辑器创建小文件。一些编辑器在文件开头添加字节顺序标记 (BOM),该标记将添加到 CSV 的第一个字段名称中,这似乎使该字段不可读。有关 BOM 的更多信息,请参阅此页面。
将 CSV 文件添加到项目中
使用解决方案资源管理器中的上下文菜单,选择添加 -> 现有项目。然后浏览到所需的文件。请注意,文件过滤器可能需要更改为. 或 *.csv。
确保已部署 CSV 文件
从解决方案资源管理器中打开 CSV 文件的属性面板。将“复制到输出目录”设置为“如果较新则复制”或“始终复制”。一些文档建议“如果较新则复制”,但我更喜欢“始终复制”,因为有时文件未按预期复制。两种复制方法的区别是磁盘空间小,时间少,但是磁盘通常很大,而复制的时间通常很小。在我看来,任何节省都远远超过确保文件将被正确复制。
将 CSV 文件添加为单个测试的数据源
将 [TestMethod] 属性替换为正确的数据源行。此 Microsoft 博客显示了几种可能的数据源文件类型的替换代码。对于 CSV 使用:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\\data.csv", "data#csv",
DataAccessMethod.Sequential), DeploymentItem("data.csv"),
TestMethod]
请注意,文件名出现了 3 次,其中一个副本有 # 而不是 .。我没有找到任何有关 Datasource(...) 属性的不同字段的有用文档,因此无法进一步建议如何为非选择值-CSV 数据源。
|数据目录| 上面的部分替换为测试运行时部署文件的目录。如果需要,字符串引号中的整个文件名可以替换为文件的完整路径名。
读取 CSV 字段并在测试中使用它们
Coded UI 记录和生成工具创建的类具有字段,这些字段保存输入到文本框中或在断言中使用的值。每个动作方法都有一个 ...Params 类,每个断言方法都有一个 ...ExpectedValues 类,其中 ... 是方法名称。这些字段的默认值是记录测试时使用的值。在调用动作或断言方法之前,记录的值可以被赋值覆盖。从 TestContext.DataRow[...] 访问数据源当前行的字段。
假设一个 Coded UI 测试有一个 EnterValue 方法将文本写入屏幕的两个字段,并且它还有一个 CheckResult 方法断言一个字段。然后可以将测试方法编写如下。
[DataSource...
TestMethod]
public void CodedUITestMethod1()
{
this.UIMap.EnterValueParams.UIItem0TextSendKeys = TestContext.DataRow["ValueOne"].ToString();
this.UIMap.EnterValueParams.UIItem1TextSendKeys = TestContext.DataRow["ValueTwo"].ToString();
this.UIMap.EnterValue();
this.UIMap.CheckResultExpectedValues.UIItem0TextDisplayText = TestContext.DataRow["Result"].ToString();
this.UIMap.CheckResult();
}
...Params 和 ...ExpectedValues 类允许测试在测试运行时创建值。例如,如果 EnterValue 方法还想将明天的日期写入字段,我们可以在调用它之前添加以下行: