我很难使用Coded UI测试方法映射CSV文件。这很可能是一个愚蠢的问题,但我似乎找不到解决我的问题的办法,至少没有一个有效。我确保将CSV文件的属性设置为始终复制。 我还通过在测试方法上面写了以下行来导入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文件中的第一列。当我尝试导入任何其他值时,它完全正常。
答案 0 :(得分:8)
某些文本文件以字节顺序标记(BOM)开头。 Coded UI中的CSV阅读器不处理BOM并将其视为第一个字段名称的一部分。下面的屏幕截图显示了带有BOM的CSV文件的调试跟踪以及Notepad ++中显示的相同文件。 DataRow.ItemArray[...]
值与预期值一致。 DataRow.Table.Columns.ResultsView[...]
显示字段名称,但第一个字段名称包括BOM。
此带有BOM的CSV文件是使用Solution Explorer =>在Visual Studio中创建的。添加=>新商品=> C#=>一般=>文本文件。以前我用Microsoft Excel创建了一个电子表格并将其保存为CSV文件,该文件没有BOM。我还使用Notepad ++创建了文件并保存为CSV,但它们没有BOM。看来Visual Studio使用BOM创建文件,但在编辑CSV文件时,它不会添加BOM。
Visual Studio可以使用正确的编码创建文件。在this Microsoft页面的“第2步 - 创建数据集”中,它说明了以下文字。 (还要感谢 Holistic Developer 在评论中提供非常相似的详细信息。):
- 使用正确的编码保存.csv文件很重要。在“文件”菜单上,选择“高级保存选项”,然后选择“Unicode” (UTF-8无签名) - 代码页65001作为编码。
醇>
答案 1 :(得分:1)
对于Visaul Studio 2010,我可以解决问题选择"西欧(Windows) - 代码页1252" CSV文件的编码。
步骤摘要: 在visual studio 2010中,打开CSV文件>转到文件菜单>选择"高级保存选项" >选择"西欧(Windows) - 代码页1252" >保存。
这应该有所帮助。
答案 2 :(得分:0)
这不是最好的解决方案,但它是一种解决方法。我只是将第一个元素设置为随机的,因为我不需要访问第一个元素,所以我无权访问它。
如果有人找到解决此问题的正确方法,我将非常感谢你的解决方案。