我有一个encodeui测试,它从.csv文件中读取值。我正在使用以下代码:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\testdata.csv", "testdata#csv", DataAccessMethod.Sequential), DeploymentItem("testdata.csv"), TestMethod]
public void test()
{
String a = TestContext.DataRow["Field 1"].ToString();
}
作为我要求的一部分,我需要捕获测试结果,例如生成id并将其再次写回“testdata.csv”。
我尝试使用:TestContext.DataRow["IDField"] = id;
但它不成功。
我的问题是:
由于
答案 0 :(得分:0)
您无法更新到正在读取的CSV数据源文件。一种方法是写入新的CSV文件。此新文件可能包含数据源CSV中的所有数据以及任何新字段。 [ClassInitialize]
或[AssemblyInitialize]
可用于使用列标题编写CSV的第一行。 [TestCleanup]
可能是编写CSV数据行的好地方,因为无论测试用例是否通过,都应该调用它。如果只应为通过的测试编写CSV,则将CSV数据行写为[TestMethod]
的最后一个操作。
可以使用读取如上所述的CSV的第二个测试。尝试同时运行两个测试可能会失败。在一个测试用例中读取CSV而另一个测试用例正在向其写入行可能会导致各种问题。 (例如,如果第二个测试赶上第一个测试,如何处理读取没有数据的文件怎么办?不要认为这会按照您的意愿工作,假设最坏的情况。)
编码的UI只允许为测试提供一个数据源属性。