Size: a a a

testing_in_python

2021 June 04

EB

Evgenii B in testing_in_python
что тут отметить стоит:

ты ждешь обновления строки, причем сразу дожидаешься правильного обновленного счетчика. если не нашлось, download() метод упадет через 10 секунд.
источник

EB

Evgenii B in testing_in_python
т.е. рассмотри идею поиска сразу локатора в котором есть нужный тебе текст, чем искать элемент и только потом дополнительно проверять, что в нем счетчик обновлен. позволь движку селениум дожидаться до появления нужного тебе текста, чем дожидаться до элемента, и потом отдельно проверять текст
источник

СС

Сказочный Сникерс... in testing_in_python
либо если ему так хочется сначала собирать все элементы, чтобы потом с ними работать - дополнить свой код концепцией ElementObject, когда найденный элемент это не просто селениумовский WebElement, а собственный объект, который готов в случае чего повторно найти себя если в случае обращения к любому методу или атрибуту этого объекта возникает StaleReference
источник

EB

Evgenii B in testing_in_python
мой код разумеется нужно поправить будет если contains() дает ложные результаты (когда у тебя этот айдишник присутствует на странице в других местах), тогда стоит сделать более уточняющий локатор, как например у тебя, чтобы в локаторе была проверка что именно первые 6 символов - это тот самый ID
источник

EB

Evgenii B in testing_in_python
джавой запахло! XD
источник

СС

Сказочный Сникерс... in testing_in_python
главное что не селенидом)
источник

EB

Evgenii B in testing_in_python
но вообще идея неплохая, может потенциально сэкономить на обращениях к DOM
источник

SK

Sergey Korol in testing_in_python
А зачем создавать WDWait в цикле? Или это было чисто для демонстрации, что такое вообще существует?
источник

EB

Evgenii B in testing_in_python
нужно  вынести из цикла, конечно
источник

EB

Evgenii B in testing_in_python
писал по памяти, не работаю с питоном в последнее время, простите =) запамятовал что его не нужно инициализировать постоянно
источник

SK

Sergey Korol in testing_in_python
Его лучше сразу привязать к драйверу и затем везде переиспользовать.
источник

EB

Evgenii B in testing_in_python
Да, это будет правильней
источник

Ф

Филипп in testing_in_python
Лады, спасибо!
источник

А

Андрей in testing_in_python
а позвольте ну совсем нубовский вопрос.. Вот у меня есть apiclient, набор тестов для него.. чтобы мне запускать их удаленно, мне теперь надо найти какой-то сервер с поддержкой python, залить туда скрипты с тестами, настроить jenkins например, который будет репу деркать по правилам... вот такой план примерно должен быть?
источник

А

Андрей in testing_in_python
или я где-то путаю..?
источник
2021 June 05

SK

Sergey Korol in testing_in_python
Речь об абстрактном пет-проекте или реальном? Если второе, то скорее всего вся инфраструктура уже существует. Осталось только настроить пайплайн для запуска тестов по отношению к какому-либо окружению. Или хочется просто попрактиковаться?
источник

А

Андрей in testing_in_python
Проект реальный, все работает и активно развивается, тестирования не было совсем до этого. Решил начать с Api, гоняю тесты с локального. Задача делать это удаленно в идеале после сборок тестовых и мастер веток
источник

SK

Sergey Korol in testing_in_python
Ну если проект реальный, то у вас уже точно есть ci/cd. Надо выяснить какой, и кто ответственен за инфраструктуру. Затем - описать постановку задачи, и пусть компетентные люди все быстро настроят. Без опыта вряд ли вас пустят на боевые сервера вклиниваться в существующие пайплайны. Касательно веток: если у вас классический gitflow, то скорее всего в мастер попадает уже финальный релиз. Соответственно, API тесты уже поздно запускать на этом этапе. Они не принесут никакой пользы команде. С учётом того, что это black box, наиболее эффективным будет запуск либо по созданию PR разработчиков из фиче-бранчи в дев (но такой вариант потребует поднятия бекенда во временном окружении - докеры/виртуалки), либо после слияния фиче-бранчи в дев и развертывания бекенда на выделенном окружении (более простой вариант, но потенциальные проблемы обнаруживаются уже после мерджа). Есть ещё более редкий кейс запуска ваших тестов девелоперами по pre-push хуку. Но эффективность такого подхода напрямую зависит от того, смогут ли разработчики поддерживать ваши тесты в случае обнаружения проблем. Если нет (что наиболее вероятно), то скорее всего оптимальным окажется лишь предыдущий сценарий. Ну и ещё желательно сразу приучать команду читать тест репорты, чтобы это была общая ответственность, т.к. в разработке и тестировании участвуют все без исключения. Соответственно, и проблемы нужно решать сообща.
источник

SK

Sergey Korol in testing_in_python
На тестовый код тоже естественно будет настраиваться пайплайн. Но там фокус делается уже не на регрессии, а на расширении покрытия какого-то функционала. Цель - слияние стабильной и расширенной версии тестов в рабочую ветку. При этом, сам запуск тестов тут нужен скорее для того, чтобы показать, что вы ничего не сломали своими изменениями, а поставленная задача - выполнена. Все баги же, как правило, выявляются в процессе разработки.
источник

SK

Sergey Korol in testing_in_python
В общем, основной value ваши тесты приносят только тогда, когда они интегрированы в основной дев пайплайн. Ни локальные запуски в отрыве от разработки, ни обособленный удаленный запуск никогда не дадут такого выхлопа.
источник