CodedUI TestCaseFilter

Използвам CSV файл като DataSource в моите CodedUI тестове. Файлът изглежда така:

Environment,URL
Live,www.example.com
Stage,stage.example.com
Test,test.example.com

Бих искал да мога да настроя моя TestCaseFilter да изпълнява селективно тестовете само на една от средите, когато изпълнява командния ред vstest.console.exe. Изглежда не мога да намеря начин да направя това, т.е. изглежда, че параметърът на командния ред TestCaseFilter поддържа само конкретни свойства. Греша ли? Има ли начин да се предаде персонализирано свойство на TestCaseFilter, така че да се изпълняват само тестовете, които се отнасят до конкретен DataRow?

DataSource в моите тестове е настроен така:
[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 реда във файла с тестови данни?   -  person Rajesh S    schedule 11.08.2016
comment
Как искате да посочите реда, който искате да изпълните? В тестовия метод или в самия ексел?   -  person Rajesh S    schedule 17.08.2016


Отговори (1)


Простият и най-добър начин е да добавите друга колона до колоната за среда във вашия файл с тестови данни. Кажете, че името на колоната е RunStatus. Стойностите трябва да бъдат или „Да“ или „Не“, логиката е, че URL адресът, който има Runstatus като Да, трябва да бъде включен за изпълнението.
въведете описание на изображението тук

Преди TestMethod имайте условие да проверите Runstatus на реда е Да. Ако е Да, стартирайте TestMethod.

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

Дано помогне. Късмет !!

person Rajesh S    schedule 17.08.2016