Arh*_*rha 4 csv import data-driven-tests coded-ui-tests visual-studio-2013
我很难使用Coded UI测试方法映射CSV文件.这很可能是一个愚蠢的问题,但我似乎找不到解决我的问题的办法,至少没有一个有效.我确保将CSV文件的属性设置为始终复制.我还通过在测试方法上面写了以下行来导入CSV文件.
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\Data\\login.csv", "login#csv", DataAccessMethod.Sequential), DeploymentItem("login.csv"), TestMethod]
Run Code Online (Sandbox Code Playgroud)
文件名是login.csv
,它位于Data
文件夹中.
测试将编译没有任何问题但是一旦测试执行,应该从CSV文件接收输入的字段保持为空并且执行被中断.我尝试使用字符串替换CSV文件中的数据,它完全正常.我用来导入每个参数的代码是:
TestContext.DataRow["Username"].ToString()
Run Code Online (Sandbox Code Playgroud)
此外,CSV文件包含以下内容:
Username,Password,Fullname
admin@mail.com,password,Admin
Run Code Online (Sandbox Code Playgroud)
是否有人可以指出我忘记了什么.
更新:我确定了问题,似乎问题只围绕csv文件的第一列.当我尝试导入任何其他值时,它完全正常.
某些文本文件以字节顺序标记(BOM)开头.Coded UI中的CSV阅读器不处理BOM并将其视为第一个字段名称的一部分.下面的屏幕截图显示了带有BOM的CSV文件的调试跟踪以及Notepad ++中显示的相同文件.将DataRow.ItemArray[...]
作为预期值.在DataRow.Table.Columns.ResultsView[...]
显示的字段名,但第一场名称包括BOM.
带有BOM的CSV文件是在Visual Studio中使用Solution Explorer => Add => New item => C#=> General => Text file创建的.以前我用Microsoft Excel创建了一个电子表格并将其保存为CSV文件,该文件没有BOM.我还使用Notepad ++创建了文件并保存为CSV,但它们没有BOM.看来Visual Studio使用BOM创建文件,但在编辑CSV文件时,它不会添加BOM.
Visual Studio可以使用正确的编码创建文件.在此Microsoft页面的" 步骤2 - 创建数据集 "中,它指出了以下文本.(也感谢Holistic Developer在评论中提供了非常相似的细节.):
- 使用正确的编码保存.csv文件很重要.在FILE菜单上,选择Advanced Save Options并选择Unicode(UTF-8 without signature) - Codepage 65001作为编码.