Добрый вечер. Хотелось бы спросить как проще реализовать следующий тестовый сценарий. Я открываю раздел в котором есть грид с данными. После фильтрации по одному из параметров я совершаю дальнейшие действия либо делаю выход.
assert - не очень хорошая замена if else. Читабельность кода понизится “до плинтуса”.
А чем собственно не нравится if/else? вполне неплохое решение ведь
Тест должен проверять один кейс, НО он не будет выполняться если нет данных. Я выполняю фильтрацию в гриде и если фильтр будет пустой (т.е. не содержать элементов для дальнейшего выполнения) то я делаю выход из системы. Сейчас просто тест ждет элемента 30 сек и падает с fail но по сути это не fail, а просто отсутствие элементов. Вот я и хочу сделать обработку. А можно через try catch как то сделать? Какой вариант проще? Если я буду делать простой assert он же не будет делать его так же как и if/else?
Используем в таких случаях if/else. Например, есть ряд сайтов для тестирования, которые в основном имеют схожий функционал, но присутствуют расхождения. В таком случае смело используем конструкцию if/else.
// do general steps
if(site1)
{
// do speсific steps for site 1
}
else if (site2)
{
// do speсific steps for site 2
}
// do general steps
И таких конструкций немало. Функционально и наглядно. Не нужно стесняться)
@Test
public void test (...)
{
LoginAs();
OpenOrderList();
FilterByParametr();
if(TotalCashAmount == 0)
{
Logout();
Assert.assertTrue(true) // for passed test
// or Assert.assertTrue(false, "There is no cash") // for failed test
}
else
{
// OtherTestSteps
// other Asserts
}
То, что ты предлагаешь делать (тесту самому определять где он выполняется) - неправильно.
Тест не должен ничего знать о сайтах и прочем окружении (в т.ч. браузере, ОС и т.д.), в котором он выполняется. Все знания об окружении необходимо выносить во фреймворк, который предоставляет тесту API для взаимодействия с тестируемым приложением
Это как так? Если тест не выполнялся, он не должен возвращать PASSED. Пусть хотя бы SKIPPED возвращает. Иначе у тебя часть приложения не проверялась, а результат получаешь PASSED. Ерунда какая-то
Зрите глубже - если вы не можете привести систему в состояние, что бы результат фильтрации возвращал записи - то этот тест бесполезен.
Что будет значит статус skipped? Что в фильтрации баг? Или просто нет кандидатов? Или грид “поломался”? Или кнопка не работает? Или “тотал” не считается?