Комментарии 31
А о чем статья? Вы написали тесты?
А какая польза от feature-файла и почему нельзя было обойтись тестами без вот этой псевдочеловекочитаемой ахинеи?
Я очень мало игрался с BDD, но я посмотрел на результат и вернулся обратно на pytest/testinfra. Я не понимаю зачем понятные выражения pytest'а заменять на текст, который на самом деле не текст, а потом писать под этот текст ещё и код. Лишние нажатия кнопок, да и только.
Куда полезнее следить за цикломатической сложностью тестов и ругаться если она высокая. Ну и code review на тестах — чем тест проще, чем проще.
Вот пример очень крутого теста для свежесобранной операционной системы:
@pytest.mark.timeout(timeout=90)
def test_nginx_systemd_and_apt(ssh_backend, wait_for_port):
'''
This check performs a simple integration
test: install nginx and check if it starts to reply
at the port 80
This test is intended for apt + systemd installations
'''
ssh_backend.Command.check_output('sudo apt-get install -y nginx')
ssh_backend.Command('sudo systemctl start nginx')
time.sleep(1)
assert wait_for_port(port=80, timeout=10)
Если да, то какой инструмент для этого наиболее прост?
Собственно в этом и была суть вопроса :)
Если нравится javaScript, то можно посмотреть в сторону Cypress. На поддержку может уходить много времени и поддерживает только chrome.
Ещё можно использовать Selenium + Python без отчётов, паттернов и bdd. Тоже быстрее будет, но при частом изменении функционала поддержка займет много времени. Вариантов много выбор зависит от конкретных потребностей на проекте.
Однако мы отказались использовать огурцы для тестирования UI так как столкнулись с тем, что получаем очень много дублирования кода и повышенные затраты на содержание этого огорода. В итоге вернулись на голый код.
Как мне кажется, если тестер понимает ограничения этого подхода (или девелопер) или же в компании работают успешные манагеры, нанимающие толпы полуграмотных тестеров из одной карри-кантри — то Кукумбер вполне рабочий инструмент.
Что можете сказать про Karate DSL?
Наигрались c огурцом, если писать что то серьезное и под большой проект, то сталкиваешься с проблемами «шарить данные между степ классами» на помощь приходит DI из cucumber-spring, тогда зачем нам огурец, нет поддержки unit5 для io.cucumber, апдейт версии io.cucumber до одной из последних крешет проект если у вас idea 2019.xxx и понеслось…
https://youtrack.jetbrains.com/issue/IDEA-217391
В итоге ушли чисто в junit 5 без bdd
Скажите пожалуйста сколько времени у вас ушло на написание этих тестов с репортингом allure? По моим подсчетам макс полторы недели ?
Какой di? Тредлокал мапа + xstreamconverter почти полностью решает проблему передачи любых объектов между шагами
Если абстрагироваться от срача про необходимость использования кукумбера, то:
С точки зрения BDD писать шаги в стиле "нажата кнопка" или "поле заполнено" это антипатерн, не для этого он задумывался.
В свою очередь, выносить логику работы с элементами в степы это антипатерн с точки зрения page object.
А если получается, что это не bdd и не page object, то надо либо выкидывать кукумбер, либо, если он нужен, заменить page object на мапу (или несколько), где ключём будет содержимое вашей аннотации name, а значением — элемент. В обоих случаях переделать это все на селенид. Все это сведет к нулю количество бесполезного кода и сильно повысит читаемость
Смок-тестирование релиз-кандидата автотестами за 15 минут