CodedUI测试不从CSV输入文件读取数据

CodedUI测试不从CSV输入文件读取数据,csv,visual-studio-2013,import,coded-ui-tests,data-driven-tests,Csv,Visual Studio 2013,Import,Coded Ui Tests,Data Driven Tests,我很难用编码的UI测试方法映射CSV文件。这很可能是一个愚蠢的问题,但我似乎找不到解决问题的方法,至少不可行。我已确保将CSV文件的属性设置为“始终复制”。 我还通过在测试方法上方写入以下行导入了CSV文件 [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\Data\\login.csv", "login#csv", DataAccessMethod.Sequential), Depl

我很难用编码的UI测试方法映射CSV文件。这很可能是一个愚蠢的问题,但我似乎找不到解决问题的方法,至少不可行。我已确保将CSV文件的属性设置为“始终复制”。 我还通过在测试方法上方写入以下行导入了CSV文件

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\Data\\login.csv", "login#csv", DataAccessMethod.Sequential), DeploymentItem("login.csv"), TestMethod]
文件名为login.csv,它位于数据文件夹中

测试将毫无问题地编译,但一旦测试执行,应该从CSV文件接收输入的字段将保留为空,并且执行被中断。我试着用字符串替换CSV文件中的数据,效果非常好。我用于导入每个参数的代码如下:

TestContext.DataRow["Username"].ToString()
此外,CSV文件包含以下内容:

Username,Password,Fullname
admin@mail.com,password,Admin
有人能指出我忘记了什么吗


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

这不是最好的解决方案,而是一种解决方法。我只是简单地将第一个元素设置为随机的,因为我不需要访问第一个元素,所以没有访问权也没关系


如果有人能找到解决这个问题的正确方法,我将非常感谢您的解决方案。

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

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

Visual Studio可以使用正确的编码创建文件。在第2步中-创建页面的数据集,并声明以下文本。还感谢整体开发人员在评论中提供了非常相似的细节:

使用正确的编码保存.csv文件非常重要。在“文件”菜单上,选择“高级保存选项”,然后选择“Unicode” 不带签名的UTF-8–代码页65001作为编码。
对于Visaul Studio 2010,我可以解决的问题是为CSV文件选择西欧Windows-Codepage 1252编码

步骤摘要: 在visual studio 2010中,打开CSV文件>转到文件菜单>选择高级保存选项>选择西欧Windows-代码页1252>保存


这应该会有帮助。

您的.csv文件是否设置为内容,始终复制?如果更新,则复制?@jessehouwing-是的构建操作设置为内容,并且“复制到输出直接”也设置为“始终复制”。我觉得一切都很好。它应该会起作用。如果你发现了问题,请告诉我们。@Sarkar-是的,我会的,我已经查明了问题所在。似乎只有当我尝试从csv文件中获取第一个元素时才会出现这种情况。因此,如果我忽略csv文件的第一列,测试将运行得非常好。@AdrianHHH我最终只使用Excel和记事本创建的csv来测试这个问题。从未想过visual studio会是罪魁祸首。在visual studio 2013中,您可以选择“文件>高级保存选项”,然后选择一种没有BOM表的编码。例如,为Unicode文件选择Unicode UTF-8(不带签名)-代码页65001,或为ANSI文件选择西欧Windows-代码页1252。