Кодированный пользовательский интерфейс - чтение / запись значений из файлов.csv
У меня есть тест codedui, который читает значение из файла.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();
}
Как часть моего требования, мне нужно захватить результаты теста, например, сгенерированный идентификатор и записать его снова в "testdata.csv".
Я пытался с помощью: TestContext.DataRow["IDField"] = id;
Но это не удачно.
Мой вопрос:
- Как мы записываем значение в этот файл во время выполнения?
- Как прочитать вышеуказанное значение в другом тесте?
- Если мне нужно прочитать значения из нескольких источников, есть ли способ сделать это, потому что в источнике данных я могу дать только одно имя файла.
Спасибо
1 ответ
Вы не можете обновить файл источника данных CSV, который читается. Одним из подходов является запись в новый файл CSV. Этот новый файл может содержать все данные из CSV источника данных, а также любые новые поля. [ClassInitialize]
или же [AssemblyInitialize]
может быть использован для записи первой строки CSV с заголовками столбцов. [TestCleanup]
может быть хорошим местом для записи строки данных CSV, так как она должна вызываться независимо от того, пройден ли тестовый пример. Если CSV должен быть записан только для проходящих тестов, запишите строку данных CSV как последнее действие [TestMethod]
,
Второй тест, который читает CSV, написанный как выше, может использоваться. Попытка запустить оба теста одновременно может привести к неудаче. Чтение CSV одним тестовым примером, в то время как другой тестовый сценарий записывает в него строки, может привести к всевозможным проблемам. (Например, что если второй тест догоняет первый, как он обрабатывает чтение файла без данных? Не думайте, что это будет работать так, как вам хотелось бы, предполагайте худшее.)
Кодированный пользовательский интерфейс позволяет использовать только один атрибут источника данных для теста.