Size: a a a

2020 May 21

S

Sergei in atinfo chat
не за что) а так сочувствую, типичная проблема, каждый борется своими хаками, попробуйте с разработчиками пообщаться, может че подскажут
источник

N

NW in atinfo chat
NW
Всем доброго времени суток! Решил как-то запилить mind map (в XMind Zen) для различных девайс-ферм (некоторая инфа может уже быть частично неактуальной, особенно цены). Очень хотелось бы, чтобы вы посмотрели, оценили. Интересно было бы так же услышать кто, какими пользуется. На кого из провайдеров лучше всего обратить внимание? Мне приглянулся Kobiton за возможность длительно (15 дней по-моему) и бесплатно пощупать неограниченное число девайсов и параллельных юзеров. Ну и в целом нравится то, что параллельных тестов можно сколько угодно на каком угодно тарифе. Цены тоже нормальные вроде бы. Единственный серьезный минус - ограничение по времени (кажется, что маловато, но может быть это только кажется и на 4 (согласно релизному графику) серьезных тестовых сессии может быть вполне достаточно)(ну и насчёт времени с ними вроде тоже можно договориться если что). Что думаете?
ни у кого не было опыта использования?
источник

СС

Сказочный Сникерс... in atinfo chat
Sergei
не за что) а так сочувствую, типичная проблема, каждый борется своими хаками, попробуйте с разработчиками пообщаться, может че подскажут
Например флаг в конфиге нафиг не показывать такую штуку
источник

СС

Сказочный Сникерс... in atinfo chat
Иначе гонка неизбежна
источник

М

Макс in atinfo chat
Сказочный Сникерс
Например флаг в конфиге нафиг не показывать такую штуку
так и делаю, но каждый раз при переходе на новую ветку приходится этот флаг выставлять
источник

СС

Сказочный Сникерс... in atinfo chat
Штош:) попроси вынести в более удобный вариант, например в настройки юзера
источник

СС

Сказочный Сникерс... in atinfo chat
Потому что саму эту фичу то же ведь надо тестить и целиком отключать включать эт бред
источник

М

Макс in atinfo chat
Сказочный Сникерс
Потому что саму эту фичу то же ведь надо тестить и целиком отключать включать эт бред
согласен
источник
2020 May 22

N

NW in atinfo chat
Здравствуйте!
Исходные данные:
- Appium+PyTest;
- Android-приложение;
- список элементов-контейнеров (div'ы, LinearLayout'ы)(содержат в себе нужные данные, которые нужно проверять и по которым нужно выбирать необходимый элемент и тапнуть/кликнуть);
- есть запрос на API, который возвращает этот список в JSON-формате и по которому строится этот UI (можно использовать в качестве тестовых/исходных данных);
- на экране (5'') полностью могут отображаться только 3 элемента из этого списка;
- на экране элементы списка могут отображаться не полностью;

Проблема1: список может быть достаточно большим, он может меняться по положению звёзд на небе (не предсказать). Но есть запрос на API, который возвращает этот список в JSON-формате и по которому строится этот UI (можно использовать в качестве тестовых/исходных данных).
Проблема2: на экране элементы списка могут отображаться не полностью, соответственно, нужна какая-то логика, которая будет это учитывать и не пытаться найти элемент-контейнер, который отображается не полностью и вложенные элементы, которого, соответственно, будет не достать в данный момент.

Что пробовал:
- без каких-то специальных средств, с помощью алгоритмов, driver.scroll, find_elements_by_xpath, find_elements_by_id и такой-то матери... получается не очень надёжно...
- с помощью UiAutomator-UiSelector-UiScrollable, уже чуть получше, но всё равно, есть свои нюансы: нужно задавать алгоритм перехода от одного элемента к другому, т.к. иначе он начнёт листать список не в ту сторону... иногда это ничего, иногда, для таких элементов UI как BottomSheetDialog - это очень критично (просто тупо закрывает список, пролистывая не в ту сторону). Вообще, странно, кстати, почему изначально этот селектор пытается скроллить/свайпить вверх (в начало списка), а не наоборот?... И можно ли как-то задать ему направление более конкретное? Типа: up/down для вертикального scrollable-элемента?
- увидел driver.execute_script, обрадовался, подумал: "ну всё, вот оно решение!", но не тут-то было! Оказывается:
https://github.com/appium/ruby_lib/issues/867
https://github.com/appium/appium/issues/9771
и ещё наверняка есть тикеты с жалобами и мольбами вернуть/запилить методы mobile: для Android.
- есть ещё Espresso'вский Data Matcher (https://appiumpro.com/editions/95-the-android-data-matcher-locator-strategy), который вроде бы тоже хорошо и просто решает данную проблему, но я так понял, что придётся поперелопатить половину локаторов/селекторов в PageObject'ах и плюс ещё неизвестно где будут грабли при переходе на другой драйвер... в общем не хотелось бы конечно...
Поправьте, пожалуйста, если я где-то не прав. Ну и очень буду признателен за годный совет как лучше всего решить эту задачу/проблему.
источник

N

NW in atinfo chat
список элементов-контейнеров наподобие
источник

R

Roman in atinfo chat
источник

R

Roman in atinfo chat
Пишу тесты на jest. Если 1 тест запускаю, то он работает. Если запущу например 5 штук, то 1 отрабатывает, а все остальные падают. Подскажите в чем проблема?
JobRepeatException: The job second is exists.
Вот весь код. Да, там где-то ошибка в before Each помомучто я запускал толькочто отдельно другой файл. Без модулей с простыми тестами и они проходили. Где тогда ошибка?
источник

S

Sergei in atinfo chat
Эта ошибка кидается в этом проекте https://github.com/miaowing/nest-schedule/blob/master/lib/scheduler.ts#L220, который очевидно используется у вас для CalculationService. Метод calculateAmountOfUsersInHospital скорее всего продекорирован как крон-джоба, а nest-schedule запрещает одновременно вызывать одну и ту же джобу и бросает исключение. Вопрос отсюда - как получается, что метод вызывается в разных тестах, но может быть вызван параллельно. Тут возникает специфика jest - он по умолчанию запускает тесты параллельно https://github.com/facebook/jest/blob/master/packages/jest-runner/src/index.ts#L67. Причем старается параллелить через потоки - https://github.com/facebook/jest/blob/master/packages/jest-worker/src/WorkerPool.ts#L40. Поскольку для потоков одно адресное пространство в процессе, то nest-schedule в разных потоках использует одно хранилище для хранения запущенных джоб (статик-метод) https://github.com/miaowing/nest-schedule/blob/master/lib/scheduler.ts#L16, и как результат видит что, одна крон джоба запущена и кидает исключение при попытке запустить другую, пока эта еще не завершилась.
Это предположение на основе твоего скрина. Попробуй запустить jest без распараллеливания тестов https://jestjs.io/docs/en/cli.html#--runinband и если тесты пройдут то догадка верна 🙂

P.S. и еще ты запускаешь контейнер с монгой перед каждым тестом, а останавливаешь только после всех. Лучше запускать контейнер тоже перед всеми тестами, а то сейчас у тебя в памяти болтаются почти все контейнеры кроме последнего на который указывает ссылка и который гасится в afterAll
источник
2020 May 23

R

Roman in atinfo chat
Когда я только оставил before + after то мне выдало другую ошибку уже с винстоном. Странно почему там винстон. А не подскажите как его замокать? Например как мокать через блок провайдеров то, что не нужно для теста, при создании testing module?
источник

R

Roman in atinfo chat
Sergei
Эта ошибка кидается в этом проекте https://github.com/miaowing/nest-schedule/blob/master/lib/scheduler.ts#L220, который очевидно используется у вас для CalculationService. Метод calculateAmountOfUsersInHospital скорее всего продекорирован как крон-джоба, а nest-schedule запрещает одновременно вызывать одну и ту же джобу и бросает исключение. Вопрос отсюда - как получается, что метод вызывается в разных тестах, но может быть вызван параллельно. Тут возникает специфика jest - он по умолчанию запускает тесты параллельно https://github.com/facebook/jest/blob/master/packages/jest-runner/src/index.ts#L67. Причем старается параллелить через потоки - https://github.com/facebook/jest/blob/master/packages/jest-worker/src/WorkerPool.ts#L40. Поскольку для потоков одно адресное пространство в процессе, то nest-schedule в разных потоках использует одно хранилище для хранения запущенных джоб (статик-метод) https://github.com/miaowing/nest-schedule/blob/master/lib/scheduler.ts#L16, и как результат видит что, одна крон джоба запущена и кидает исключение при попытке запустить другую, пока эта еще не завершилась.
Это предположение на основе твоего скрина. Попробуй запустить jest без распараллеливания тестов https://jestjs.io/docs/en/cli.html#--runinband и если тесты пройдут то догадка верна 🙂

P.S. и еще ты запускаешь контейнер с монгой перед каждым тестом, а останавливаешь только после всех. Лучше запускать контейнер тоже перед всеми тестами, а то сейчас у тебя в памяти болтаются почти все контейнеры кроме последнего на который указывает ссылка и который гасится в afterAll
Теперь я решил убрать тесты и запустить без них и вот что получилось
источник

R

Roman in atinfo chat
Sergei
Эта ошибка кидается в этом проекте https://github.com/miaowing/nest-schedule/blob/master/lib/scheduler.ts#L220, который очевидно используется у вас для CalculationService. Метод calculateAmountOfUsersInHospital скорее всего продекорирован как крон-джоба, а nest-schedule запрещает одновременно вызывать одну и ту же джобу и бросает исключение. Вопрос отсюда - как получается, что метод вызывается в разных тестах, но может быть вызван параллельно. Тут возникает специфика jest - он по умолчанию запускает тесты параллельно https://github.com/facebook/jest/blob/master/packages/jest-runner/src/index.ts#L67. Причем старается параллелить через потоки - https://github.com/facebook/jest/blob/master/packages/jest-worker/src/WorkerPool.ts#L40. Поскольку для потоков одно адресное пространство в процессе, то nest-schedule в разных потоках использует одно хранилище для хранения запущенных джоб (статик-метод) https://github.com/miaowing/nest-schedule/blob/master/lib/scheduler.ts#L16, и как результат видит что, одна крон джоба запущена и кидает исключение при попытке запустить другую, пока эта еще не завершилась.
Это предположение на основе твоего скрина. Попробуй запустить jest без распараллеливания тестов https://jestjs.io/docs/en/cli.html#--runinband и если тесты пройдут то догадка верна 🙂

P.S. и еще ты запускаешь контейнер с монгой перед каждым тестом, а останавливаешь только после всех. Лучше запускать контейнер тоже перед всеми тестами, а то сейчас у тебя в памяти болтаются почти все контейнеры кроме последнего на который указывает ссылка и который гасится в afterAll
Я пробовал запускать с флагом --runInBand но это не решило проблему. Наверно проблема та что я опмсал выше. Именно с винстоном и записью логов в файл
источник

MP

Mykhailo Poliarush in atinfo chat
источник

MP

Mykhailo Poliarush in atinfo chat
новая статья в базе знаний 📥 https://automated-testing.info/t/24130
делитесь знаниями, пишите о своем опыте в базе знаний и помогайте коммьюнити расти!
источник
2020 May 24

RB

Ruslan Bondarenko in atinfo chat
Подскажите пожалуйта не могу найти ответ, может кто то знает

Пишу API тесты на Codeception
Использую дата провайдер

Есть ли возможность передать данные с дата провайдера в функцию _before и _after, в данных метода будет очистка базы, а с дата провайдера будут передаваться таблицы которые нужно очистить, сейчас метод очистки используется в начале и в конце функции теста, но если тест упадет по средите то в конце очиста не выполнится...
источник

ИС

Игорь Середа... in atinfo chat
Ruslan Bondarenko
Подскажите пожалуйта не могу найти ответ, может кто то знает

Пишу API тесты на Codeception
Использую дата провайдер

Есть ли возможность передать данные с дата провайдера в функцию _before и _after, в данных метода будет очистка базы, а с дата провайдера будут передаваться таблицы которые нужно очистить, сейчас метод очистки используется в начале и в конце функции теста, но если тест упадет по средите то в конце очиста не выполнится...
_after выполнится после теста вне зависимости от результата. Ты, возможно, путаешь с метдом _passed, который будет выполнен только при успешном прохождении теста.
источник