Есть тест. Цель теста: переводить страницу на другой язык(на странице снизу есть переключатель от гугл транслейта), и проверять как одно слово будет показано на разных языках.
Тест работает, но так как задачу еще не решили с переводом, он крашится. И вот тут начинается проблема - этот тест не последний, и за ним идут последующие. Соответственно, тесты начинают крашится из-за другого языка.
Вопрос: можно как-то с помощью цикла(например while(true)
)/другие способы также интересны - сделать так, чтобы в случае краха, он исполнил кусок кода, который как раз возвращал язык на русский?
Работаю в Selenium + TestNg + Java
Проверка нужного фрагмента делаю через:
assertEquals(искомое поле.getText(), "ожидаемый результат");
@AfterTest
не хочется использовать.
+Есть конечно вариант запилить на время отдельный тест который возвращает, или просто убрать из набора тестов, но интересны пути решения.
П.С. пробовал обернуть assertEquals
, но он тип void
.
П.С.С. Сразу вопрос: также пробовал разбить данный набор тестов в testng.xml
- нужный набор тестов перекинуть вниз.
Выглядит как-то так:
<class name="1-ый класс">
<methods>
<include name="метод1" />
<include name="метод2" />
<include name="метод3" />
<include name="метод4" />
<include name="метод5" />
<include name="метод6" />
</methods>
</class>
<class name="2-ой класс">
<methods>
<include name="метод1" />
<include name="метод2" />
<include name="метод3" />
</methods>
</class>
<class name="Еще раз указываю 1-й класс">
<methods>
<include name="тест с переводом" />
</methods>
</class>
В таком случае тесты идут идут идут и потом в определенном месте сами останавливаются. Написано stopped - ощущение как будто пользователь(я) сам нажал.
Тесты не должны зависеть от других. антипаттерн
Aнтипаттерн Щедрые Остатки (Generous Leftovers)
Случай, когда один unit-тест создаёт данные, которые где-то сохраняются, а другой тест их потом переиспользует. Если «генератор данных» будет по какой-то причине вызван позже или пропущен, то тест, использующий его данные, не пройдёт.
Каждый метод должен открыть страницу заново, чтобы выполнение одного метода не повлияло на результат другого.
Но также можно выполнить код после выполнения каждого метода (tearDown()
), либо после кадого класса (afterClass()
)
@BeforeClass
– Выполняется один раз перед тестовым классом@AfterClass
– Выполняется один раз после выполнения всех методов @Test
в классе@Before
– Выполняется один раз перед любым из методов @Test
@After
– Выполняется один раз после любого метода @Test
пример кода
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть код для проверки на палиндром, но работает он только с латинскими буквамиПочему так?
Написал метод который должен по ключу искать подходящее значение в ArrayListНо то ли они разного типа(хотя и String и Object пробовал), то ли я ещё чего-то...
Как объединить две коллекции Elements actors, roles в одну List<Actors> (у Actors есть два таких же поля) более элегантно, чем for() с итератором?