编码的ui - 来自.csv文件的读/写值

时间:2016-06-29 23:53:33

标签: c# selenium-webdriver coded-ui-tests

我有一个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;

但它不成功。

我的问题是:

  1. 我们如何在运行期间为此文件写入值?
  2. 如何在不同的测试中阅读上述值?
  3. 如果我需要从多个来源读取值,有没有办法做到这一点,因为在数据源中,我只能提供一个文件名。
  4. 由于

1 个答案:

答案 0 :(得分:0)

您无法更新到正在读取的CSV数据源文件。一种方法是写入新的CSV文件。此新文件可能包含数据源CSV中的所有数据以及任何新字段。 [ClassInitialize][AssemblyInitialize]可用于使用列标题编写CSV的第一行。 [TestCleanup]可能是编写CSV数据行的好地方,因为无论测试用例是否通过,都应该调用它。如果只应为通过的测试编写CSV,则将CSV数据行写为[TestMethod]的最后一个操作。

可以使用读取如上所述的CSV的第二个测试。尝试同时运行两个测试可能会失败。在一个测试用例中读取CSV而另一个测试用例正在向其写入行可能会导致各种问题。 (例如,如果第二个测试赶上第一个测试,如何处理读取没有数据的文件怎么办?不要认为这会按照您的意愿工作,假设最坏的情况。)

编码的UI只允许为测试提供一个数据源属性。