Size: a a a

testing_in_python

2021 November 22

ЗВ

Завьялов Владислав... in testing_in_python
При попытке отправить через селеноид файл в инпут выходит ошибка
unknown command: session/f8677709c6ae5ffbbe2c9bb69a61bfee/se/file
Насколько знаю это довольно частая проблема для селеноида при отправке jpg or png картинки.
Кто-то как-то устранял?
источник

ТЭ

Тачами Экстович... in testing_in_python
источник

OC

Oleg Chaplashkin in testing_in_python
Вопрос в лоб: "хочу модель ХХХ гонять бесконечно, модель YYY запускать раз в сутки, модель ZZZ каждый час"

Два последних случая - элементарны. Что делать с первым?

Представим условную систему, вот она там тесты держит, фикстуры и красиво запускается через маркеры типа pytest -m modelXXX

Бесконечный прогон как в этом случае реализовать по маркеру? Башем?
источник

ТЭ

Тачами Экстович... in testing_in_python
Да, просто в бесконечном цикле запускай свои тесты и все.
источник

OC

Oleg Chaplashkin in testing_in_python
Хорошо, как включить другую модель? Или как прервать текущую?

Сорри за тупые вопросы, я смотрел кишочки пайтеста и не увидел, как и где можно аккуратно вставить этот цикл с возможностью влияния из внешнего мира
источник

ТЭ

Тачами Экстович... in testing_in_python
Сделать просто параметризованную сборку на твоем CI, и дергать ее с параметрами, которые передавать в pytest. Ну, внутри там уже разберешься.
источник

ТЭ

Тачами Экстович... in testing_in_python
Из переменных окружения, или еще как.
источник

ТЭ

Тачами Экстович... in testing_in_python
Ну, вообще, да. Если у тебя есть какая-то логика выбора джобы ее вполне можно в отдельный сервис вынести с рест-апишкой. Был не прав!
источник

OC

Oleg Chaplashkin in testing_in_python
У меня сейчас сделано следующее:
fastapi/uvloop, методы на /start /stop /stats
При старте, берется модель, всякая внутрянка и закидывается в uvloop, выполняется асинхронно. Потом при /stop,  просто проверяется, есть ли такая таска, если есть - отменяем и внутри модели корректно идет выход через asyncio.CancelledError
источник

OC

Oleg Chaplashkin in testing_in_python
С апишкой - не проблема, тут у меня что-то заклинило и я не могу понять, как это может выглядеть в джобе

Ок, не плодим джобы и передаем все через параметры. В случае одинарного запуска - не проблема, что делать когда вот такой кейс:

XXX -> (start) -> .....
                        (YYY) -> start -> .... -> stop


Т.е. во время выполнения модели XXX, идет выполнение модели YYY (читай модель == тест набор)

Ок, это запуск одной и той же системы с разными параметрами
источник

OC

Oleg Chaplashkin in testing_in_python
Иными словами: кто управляет бесконечным циклом? Где поток управления?

В системе пайтеста?
В джобе ci/cd?
В другом сервисы с апишкой?
источник

ТЭ

Тачами Экстович... in testing_in_python
Либо в отдельной джобе, либо в отдельном сервисе (хоть бы и скрипте в бесконечном цикле).
источник

ТЭ

Тачами Экстович... in testing_in_python
С джобой не очень удобно будет, потому что постоянно занят билд-агент.
источник

OC

Oleg Chaplashkin in testing_in_python
Странно, джобу откидываем, она по таймауту отвалится и ничего с этим не сделаешь

Отдельный сервис ... т.е. бежать на уровени ОС, смотреть "запущено ли", если да, то убивать процесс?
источник

ТЭ

Тачами Экстович... in testing_in_python
Нет, сами сборки вполне могут быть джобами. Запустил -- сохранил id -- чекаешь готово или нет. Если готово -- забрал результат, если нет -- отменяешь просто.
источник

ТЭ

Тачами Экстович... in testing_in_python
Ну, тебе скорее всего и не нужна бесконечная. Новая сборка просто стартует как предыдущая законченна, и все.
источник

OC

Oleg Chaplashkin in testing_in_python
Странно, причем тут сборка

Такая специфика, что условная модель XXX - будет работать 24/7
источник

ТЭ

Тачами Экстович... in testing_in_python
Если это мониторинг -- то входной набор параметров будет стабильным. Т.е. условно запустить ХХХ, YYY, если все ОК -- мониторинг зеленый, если что-то упало -- загорелся. Но ты не будешь туда конфигурации на лету подкивать, это просто тестирование прода уже.
источник

ТЭ

Тачами Экстович... in testing_in_python
Нда
источник

ТЭ

Тачами Экстович... in testing_in_python
Одна модель == один набор параметров для пайтеста, так?
источник