CodedUI TestCaseFilter

Я использую файл CSV в качестве источника данных в своих тестах CodedUI. Файл выглядит так:

Среда, URL
Live, www.example.com
Stage, stage.example.com
Test, test.example.com

Я хотел бы иметь возможность настроить мой TestCaseFilter для выборочного запуска тестов только в одной из сред при запуске командной строки vstest.console.exe. Кажется, я не могу найти способ сделать это, т.е. похоже, что параметр командной строки TestCaseFilter поддерживает только определенные свойства. Я ошибся? Есть ли способ передать пользовательское свойство в TestCaseFilter, чтобы выполнялись только тесты, относящиеся к определенному DataRow?

Источник данных в моих тестах настроен следующим образом:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\environments.csv", "environments#csv", DataAccessMethod.Sequential)]

И я ссылаюсь на среду в каждом тесте следующим образом:
var url = TestContext.DataRow["URL"].ToString();

Спасибо за любое понимание.


person VishuPDX    schedule 08.08.2016    source источник
comment
если я вас правильно понял, вы имеете в виду, что хотите запустить только одну строку, которую вы хотите, где есть 3 строки в файле testdata?   -  person Rajesh S    schedule 11.08.2016
comment
Как вы хотите указать строку, которую хотите запустить? В тестовом методе или в самом excel?   -  person Rajesh S    schedule 17.08.2016


Ответы (1)


Самый простой и лучший способ — добавить еще один столбец рядом со столбцом среды в файле тестовых данных. Скажем, имя столбца — RunStatus. Значения должны быть либо «Да», либо «Нет». Логика заключается в том, что URL-адрес со статусом выполнения «Да» должен быть включен для выполнения.
введите здесь описание изображения

Перед TestMethod у вас должно быть условие для проверки Runstatus строки «Да». Если да, запустите TestMethod.

[TestMethod]
public void RunTheTest(TestContext testcontext)
{
   if(testcontext.DataRow["RunStatus"].ToString()=="Yes")
   {
    TestMethod1();
   }
}   

Надеюсь, поможет. Удачи !!

person Rajesh S    schedule 17.08.2016