4

我在使用 Coded UI 测试方法映射 CSV 文件时遇到了困难。这很可能是一个愚蠢的问题,但我似乎无法为我的问题找到解决方案,至少没有一个有效的解决方案。我确保将 CSV 文件的属性设置为Copy always。我还通过在测试方法上方写入以下行来导入 CSV 文件。

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\Data\\login.csv", "login#csv", DataAccessMethod.Sequential), DeploymentItem("login.csv"), TestMethod]

文件名是login.csv,它驻留在Data文件夹中。

测试将毫无问题地编译,但是一旦测试执行,应该从 CSV 文件接收输入的字段留空并且执行被中断。我尝试使用字符串替换 CSV 文件中的数据,它工作得非常好。我用来导入每个参数的代码是:

TestContext.DataRow["Username"].ToString()

此外,CSV 文件包含以下内容:

Username,Password,Fullname
admin@mail.com,password,Admin

有没有人能指出我忘记了什么。

更新:我查明了问题,似乎问题仅围绕 csv 文件中的第一列。当我尝试导入任何其他值时,它工作得非常好。

4

3 回答 3

8

一些文本文件以字节顺序标记 (BOM) 开头。Coded UI 中的 CSV 阅读器不处理 BOM 并将其视为第一个字段名称的一部分。下面的屏幕截图显示了带有 BOM 的 CSV 文件和 Notepad++ 中显示的相同文件的调试跟踪。DataRow.ItemArray[...]值符合预期。显示DataRow.Table.Columns.ResultsView[...]字段名称,但第一个字段名称包括 BOM。

这个带有 BOM 的 CSV 文件是在 Visual Studio 中使用解决方案资源管理器 => 添加 => 新项目 => C# => 常规 => 文本文件创建的。以前我用 Microsoft Excel 创建了一个电子表格并将其保存为 CSV 文件,该文件没有 BOM。我还使用 Notepad++ 创建了文件并保存为 CSV,但它们没有 BOM。似乎 Visual Studio 创建了带有 BOM 的文件,但是在编辑 CSV 文件时它不会添加 BOM。

在此处输入图像描述


Visual Studio 可以创建具有正确编码的文件。在此 Microsoft页面的“步骤 2 - 创建数据集”中,它说明了以下文本。(也感谢Holistic Developer在评论中提供了非常相似的细节。):

  1. 使用正确的编码保存 .csv 文件很重要。在 FILE 菜单上,选择 Advanced Save Options 并选择 Unicode (UTF-8 without signature) – Codepage 65001 作为编码。
于 2014-07-15T21:17:10.993 回答
1

对于 Visaul Studio 2010,我可以解决为 CSV 文件选择“西欧 (Windows) - Codepage 1252”编码的问题。

步骤摘要:在 Visual Studio 2010 中,打开 CSV 文件 > 转到文件菜单 > 选择“高级保存选项”> 选择“西欧 (Windows) - 代码页 1252”> 保存。

这应该会有所帮助。

于 2016-03-09T11:31:50.737 回答
0

这不是最好的解决方案,而是一种解决方法。我只是将第一个元素设置为随机的,因为我不需要访问第一个元素,所以我无权访问它并不重要。

如果有人找到解决此问题的正确方法,我将不胜感激您的解决方案。

于 2014-07-15T08:21:52.043 回答