
Evgeniy
29.08.2017
11:43:35
на скрам доске или канбане?

Shoo
29.08.2017
11:43:38

Aleksandr
29.08.2017
11:43:46

Richard
29.08.2017
11:44:03

Google

Shoo
29.08.2017
11:44:03

Richard
29.08.2017
11:44:25
Для предоставления кастомеру, который не хочет никуда лезть, потому что у него лапки.

Evgeniy
29.08.2017
11:46:35
у Confluence есть API на публикацию пейджи. У Jira есть API на выхватывание нужноого тебе фильтра по таскам.

MnmlSniper
29.08.2017
11:47:04

Evgeniy
29.08.2017
11:47:09
подружить это темплейтом на markdown'е. записать скриптом, положить в crontab

Shoo
29.08.2017
11:47:51
Человек хочет поле со значением int, исходя из которого меняется стандартное поле estimate.
С таким же успехом можно просто заполнять в estimate суммарную оценку всех участников, но это не решает проблемы.

Alexander
29.08.2017
11:58:58

Richard
29.08.2017
12:03:43

Alexander
29.08.2017
12:04:25
а, чтобы история сохранялась ежедневная?

Evgeniy
29.08.2017
12:12:23
Я выше описал подход

Google

Yuliya
29.08.2017
12:16:42
@RichardGears
нужно только придумать фильтр. например, все такси проекта, включенные в конкретный спринт

Evgeniy
29.08.2017
12:19:04
Это динамическая страница, она не будет хранить историю
Требованием была возможность иметь стопку страниц на каждый день

Richard
29.08.2017
12:19:29
Если бы надо было просто фильтр поставить, который будет показывать ТЕКУЩИЕ статусы - проблем бы не было.

Nikita
29.08.2017
12:20:55
скриншоть их и все)

Evgeniy
29.08.2017
12:20:57
Автогенерация - задача крона или любого другого планировщика.
Публикация - задача post апи.
Агрегация данных - задача get апи

Shoo
29.08.2017
12:22:10
Я Ричарду предложил вариант, но его не устроило :(

Evgeniy
29.08.2017
12:22:12
1 день чтения мануалов, сделаю вам на выходных за 35 Бачей в час
За 3/4 часа

Richard
29.08.2017
12:35:13

Gennady
29.08.2017
13:22:41
В Unittest есть возможность автоперезапуска зафейленных тестов задаваемое количество раз?

Nikita
29.08.2017
13:26:11
нормально из коробки – нет, лучше взять pytest

Gennady
29.08.2017
13:50:50

Nikita
29.08.2017
13:54:09

Evgeniy
29.08.2017
14:01:54
9\10 разработчиков на python посоветуют пользоваться де-факто стандартным уже pytest для тестирования. или Nose.

Nikita
29.08.2017
14:05:14
ну юниттест умеет чуть менее чем ничего, у него единственный плюс – что он есть из коробки

Google

Nikita
29.08.2017
14:05:43
все равно что использовать urllib вместо requests

Кирилл
29.08.2017
14:17:02
не в то окно)

Gennady
29.08.2017
14:33:09
Попробую перевести на PyTest все, если это недолго. А то достали тесты валиться, если какой-нибудь раскрывающийся список медленно раскрылся и за ним не видно другого элемента. В итоге получается, что ошибка не в приложении, а в нестабильности тестов...

Evgeniy
29.08.2017
14:34:41
поэтому тесты нужно писать так, чтобы они учитывали этот фактор, а не гоняли их по 10 раз в цикле, надеясь, что квант случайности сыграет в лучшую сторону и в этот раз выпадающий список откроется

Maxim
29.08.2017
14:35:41
вот когда начинаются проблемы с интернетом, админов начинаешь проклинать и не понимаешь где интернет виноват, где тест, а где приложение.....

Nikita
29.08.2017
14:36:14
раннер тут ни при чем

Dmitry
29.08.2017
14:39:08
раннер тут ни при чем
классно ты его, типо не зачем зеркало винить коль рожа кривая или что-то такое в русском языке было

Gennady
29.08.2017
14:40:41
Раннер другой нужен для автоперезапуска упавшего теста

Evgeniy
29.08.2017
14:59:01

Gennady
29.08.2017
15:15:51
звучит как отговорка сделать гибкие, быстрые тесты
Приведу пример. Есть выпадающий список, под ним кнопка. Раскрытый список перекрывает кнопку, нужно ждать, пока он скроется. Ожидания не помогают, вылетает unknown error. Помогает секундный time.sleep, но на глючном тест сервере он может иногда закрываться дольше. Соответственно, тест падает.

Filipp
29.08.2017
15:17:13

Evgeniy
29.08.2017
15:17:38
Филипп, все правильно сказал

Gennady
29.08.2017
15:20:25

Shoo
29.08.2017
15:29:21
И сразу снимается вопрос с тем, где и сколько это будет выполняться.
Но я, наверное, просто "здешний пурист", не понимающий всех прелестей захардкоженных слипов.

Google

Nikita
29.08.2017
15:30:09
слипы иногда проще чем правильные вейты)
но не правильнее

Shoo
29.08.2017
15:31:23
Не вижу сложности в вышеописанном сценарии, тем более если мы не говорим об этапе "отдебажить, что бы работало", а собираемся это на удаленном тест-сервере запускать, что бы оно там нормально гонялось.

Nikita
29.08.2017
15:31:33
waitUntilClickable тоже не всегда отрабатывает, кстати
но 99% отрабатывает

Shoo
29.08.2017
15:31:49

Gennady
29.08.2017
15:31:53

Shoo
29.08.2017
15:33:14

Filipp
29.08.2017
15:33:14

Gennady
29.08.2017
15:33:37
Unknown error: element... is not clickable at point (...,...). Other element would receive the click: ....

Evgeniy
29.08.2017
15:33:43
окружения жутко лагучие, и городить свои костыли из слипов, которые постоянно нужно реранить, либо говорить себе "ну, сделаю вместо 1 секунды - две" - это отдаешь душком.

Filipp
29.08.2017
15:33:51
Не вижу смысла спорить, если честно. Пусть и говнокод, лишь бы работало. Если что-то сделает жизнь сильно лучше, заменю

Shoo
29.08.2017
15:34:10
Даже есть намек на то, в каком направлении надо копать.

Gennady
29.08.2017
15:34:53
Это при использовании ожиданий...

Evgeniy
29.08.2017
15:35:52
Это при использовании ожиданий...
двачую, вы неправильно сформировали локатор, на который кликаете. в DOM это обертка выше, которая уже имеет нужное состояние для клика.

Shoo
29.08.2017
15:35:53
Втыкаете print(Element.clickable?) под это ожидание и смотрите, что оно вам возвращает.

Evgeniy
29.08.2017
15:36:27
например, у вас обернуто все в span и вы пытаетесь кликать по нему

Shoo
29.08.2017
15:36:58
Если оно вернет clickable -> вариант Евгения выше.
Если вернет не-clickable -> делаете цикл из sleep(0.1) до тех пор, пока не будет clickable == true и смотрите, решит ли это проблему.

Evgeniy
29.08.2017
15:38:57
само собой, такие изыски и ретраи - нужно делать в потрохах метода пейдж обьекта, а не в самом тесте. в тесте это будет 1 строчка. ничем не хуже, а в тыщу раз лучше слипа

Google

Dmitry
29.08.2017
19:24:21
Click целится в центр элемента, если какой-то элемент перекрывает, то будет данная ошибка
Как фиксить: либо выбирать правильно локатор, либо если это блокирует тест,то убирать элемент перекрывающий (бывает что сверху есть другой элемент, но внешне на UI не влияющий, решается с верстальщиком или фронтендером)

Dmitry
29.08.2017
19:30:18

Gennady
29.08.2017
20:01:47

Add
29.08.2017
20:06:20

Gennady
29.08.2017
21:02:32

Nikita
29.08.2017
21:06:02
и это антипаттерн

Evgeniy
29.08.2017
21:08:41
сделали в одном месте, в другом, в третьем - потом тесты вместо 3 минут суммарно выполняются 84. Цена раскиданных явных time.sleep
если ваши тесты гоняются ночью - это не зло. Но если это - часть вашего процесса разработки, и сихронно от автотестов разработчики или ручное тестирование ждет результатов - это может и скорее всего будет проблемой.
а еще чисто с эстетической точки зрения автоматизация -это про экономию времени. неужели не хочется ускорить тесты на 500-600%.
всего лишь заменив time.sleep(5) на
wait.until

Gennady
29.08.2017
21:53:45

Evgeniy
29.08.2017
21:54:23
я уже говорил, что нужно читать лучше и понимать сообщения об ошибках. оно не работало потому что наверняка был взят не тот локатор.

Gennady
29.08.2017
21:56:04
если бы локатор был не тот, то тест вообще бы не работал. А с time.sleep работает

Evgeniy
29.08.2017
21:56:08
инженерное решение - оставить time.sleep(5), поставить TODO: договориться с самим собой, когда ты вернешься к этому коду и все дерьмо вычистишь, заодно разберешься с тем, что означают селениум исключения и в каких ситуациях они возникают