Напишу себе, чтобы не забывать:
pytest умеет переименовывать названия параметризованных тестов не только через проставление фиксированных названий в параметр ids.
Но и использовать входные данные, если структура сложная.
Читать документацию, когда она есть, это вещь полезная!
pytest умеет переименовывать названия параметризованных тестов не только через проставление фиксированных названий в параметр ids.
@pytest.mark.parametrize("param", [1, 2, 3], ids=["first", "second", "third"]
def test(param):
pass
Но и использовать входные данные, если структура сложная.
def idfn(val):
return val["value"]
@pytest.mark.parametrize("param", [{"value": "first"}, {"value": "second"}, {"value": "third"}], ids=idfn)
Читать документацию, когда она есть, это вещь полезная!
В рамках самообучения попробовала сегодня написать два текста на английском по такой схеме:
- сначала в граммарли (чтобы бесплатно проверить на фигню)
- загнать с запросом в чатГПТ (чтобы сформировать более native фразы да и просто менее канцелярские)
- смержить два текста в один.
Очень интересно и увлекательно. Правда, не ясно остается ли что-то у меня в голове.
Но рада, что дописала коротенький текст про выбор языка для автоматизации. На русском, конечно, я бы ввернула побольше язвительности.
Long story short: выбор языка дело простое, быстрое, но там куча связных параметров.
В краткосрочной перспективе мы смотрим на те ресурсы, которые есть сейчас. Это и те ЯП, которые знает прямой исполнитель или исполнители. И то, можно ли задействовать стронних людей (типа разработку, и если да, то какую). А еще неплохо бы понять, что вы точно хотите от проекта, какие есть для этого тулы, на сколько они хороши по документации, по величине сообщества, кол-ву ответов на SO etc.
Типа если вы хотите реализовывать GUI web автоматизацию и вы хотите кроссбраузерность, не стоит брать фреймфорк, который из коробки работает только в chrome. А потом пытаться натягивать сову на глобус.
В долгосрочной пероспективе нам важно сможем ли мы нанять (на сколько быстро и за сколько денег) нового специалиста. Если новичку нужно будет менять стек, то как быстро можно втянуться в язык. Какая у нас вообще техническая стратегия и SLA по качеству.
Может оказаться, что если автоматизация нужна вчера в обед хоть в каком-то виде, то подойдет и фреймворк с накликиванием. А потом будет время, чтоб переделывать нормально.
Я видела когда язык автоматизацией был языком фронтенда, бекенда, третьей интересной опцией. Как фреймворки и языки тестов менялись буквально за год.
Для собеседований еще полезно рассказывать, как вы думали над такой задачей, из каких критериев исходили, какие за и против были у рассматриваемых вариантов.
- сначала в граммарли (чтобы бесплатно проверить на фигню)
- загнать с запросом в чатГПТ (чтобы сформировать более native фразы да и просто менее канцелярские)
- смержить два текста в один.
Очень интересно и увлекательно. Правда, не ясно остается ли что-то у меня в голове.
Но рада, что дописала коротенький текст про выбор языка для автоматизации. На русском, конечно, я бы ввернула побольше язвительности.
Long story short: выбор языка дело простое, быстрое, но там куча связных параметров.
В краткосрочной перспективе мы смотрим на те ресурсы, которые есть сейчас. Это и те ЯП, которые знает прямой исполнитель или исполнители. И то, можно ли задействовать стронних людей (типа разработку, и если да, то какую). А еще неплохо бы понять, что вы точно хотите от проекта, какие есть для этого тулы, на сколько они хороши по документации, по величине сообщества, кол-ву ответов на SO etc.
Типа если вы хотите реализовывать GUI web автоматизацию и вы хотите кроссбраузерность, не стоит брать фреймфорк, который из коробки работает только в chrome. А потом пытаться натягивать сову на глобус.
В долгосрочной пероспективе нам важно сможем ли мы нанять (на сколько быстро и за сколько денег) нового специалиста. Если новичку нужно будет менять стек, то как быстро можно втянуться в язык. Какая у нас вообще техническая стратегия и SLA по качеству.
Может оказаться, что если автоматизация нужна вчера в обед хоть в каком-то виде, то подойдет и фреймворк с накликиванием. А потом будет время, чтоб переделывать нормально.
Я видела когда язык автоматизацией был языком фронтенда, бекенда, третьей интересной опцией. Как фреймворки и языки тестов менялись буквально за год.
Для собеседований еще полезно рассказывать, как вы думали над такой задачей, из каких критериев исходили, какие за и против были у рассматриваемых вариантов.
Мне кажется, что это ожидаемый результат.
Если не следить за общей чистотой кода, то ты и в вариантах копайлота не будешь видеть избыточность, допустим.
Что еще раз подтверждает тезис: AI максимальную пользу приносят "синьорам".
И еще вот что думаю: нейронка обучается на актуальном коде, качество кода стало ниже (по определенным критериям), качество предложений нейронки тоже будет ухудшаться.
https://twitter.com/milan_milanovic/status/1756952644642300282?t=1gbiqpt8dGvf9MPve4vyYg&s=19
Если не следить за общей чистотой кода, то ты и в вариантах копайлота не будешь видеть избыточность, допустим.
Что еще раз подтверждает тезис: AI максимальную пользу приносят "синьорам".
И еще вот что думаю: нейронка обучается на актуальном коде, качество кода стало ниже (по определенным критериям), качество предложений нейронки тоже будет ухудшаться.
https://twitter.com/milan_milanovic/status/1756952644642300282?t=1gbiqpt8dGvf9MPve4vyYg&s=19
Если ваше приложение подразумевает, что пользователи будут уходить, а потом возвращаться, то вы эти сценарии тоже разбирайте. А то выходит вот, что мне simple советует выпить 76 литров воды. Ну, это еще обозримо.
Но как выпить 1 336 916 480 литров за один день - это я не могу представить.
(Вообще оч хочу написать про собесы на head of qa и про то, что автоматизаторы не нужны)
Upd. Да, я написала тикет в саппорт! (Еле-еле, но нашла эту возможность)
Но как выпить 1 336 916 480 литров за один день - это я не могу представить.
(Вообще оч хочу написать про собесы на head of qa и про то, что автоматизаторы не нужны)
Upd. Да, я написала тикет в саппорт! (Еле-еле, но нашла эту возможность)
Каким-то сложными путями дошла до linear.app - это новый модный таск трекер для проектов с кучей интеграций (github, gitlab, figma, slack, discord, zendesk), AI (куда без него), синхронизацией с другими аналогичными вещами (jira, asana, github projects).
Обещают быстро - модно - молодежно.
Попробую потыкать в общем. Мб это мне пригодится.
С одной стороны, очень симпатично и удобно. С другой стороны, из моего микро проекта на гитхабе туда подтянулась 1 открытая issue из 3. Из проекта для репозитория подтянулось только название 🥲
Обещают быстро - модно - молодежно.
Попробую потыкать в общем. Мб это мне пригодится.
С одной стороны, очень симпатично и удобно. С другой стороны, из моего микро проекта на гитхабе туда подтянулась 1 открытая issue из 3. Из проекта для репозитория подтянулось только название 🥲
Так, ну я официально фанат https://linear.app/
Кроме того, что выглядит красиво и есть интеграция с github из коробки (при этом там есть настройка через ключевые слова в описании PR-ов, и это позволяет не просто закрыть тикет, но и оставить его незакрытым, если ты знаешь, что у тебя будет несколько веток в задаче).
Я разобралась как делать кастомные views. И это в каком-то роде бомба.
Когда не надо подсаживать типа на конкретный формат "доски", когда можно спокойно и быстро сделать несколько вьюшек для одного проекта и они будут персонализированными. То есть условный лид или проджект менеджер могут настроить себе kanban колоночки, а люди, которых это отвращает, могут использовать ту вьюху, которая им удобна. По дефолту это просто список задач с приоретизацией по их статусам.
Ретроспективно я думаю, что на одной из прошлых работ эта последняя фича очень бы зашла.
Мигриться я никого не призываю. Потому что не в курсе сравнения цен.
Да, я разобралась почему у меня не все задачи отображались при переносе github projects - linear (почти все ушло в архив почему-то), но не знаю, как будет вести себя миграция тикетов на больших объемах.
⭐️ отличная интеграция с PR-ами в github, которая сразу работает, так как надо (и ты не сношаешься в попытках все настроить нормально) ⭐️
Кроме того, что выглядит красиво и есть интеграция с github из коробки (при этом там есть настройка через ключевые слова в описании PR-ов, и это позволяет не просто закрыть тикет, но и оставить его незакрытым, если ты знаешь, что у тебя будет несколько веток в задаче).
Я разобралась как делать кастомные views. И это в каком-то роде бомба.
Когда не надо подсаживать типа на конкретный формат "доски", когда можно спокойно и быстро сделать несколько вьюшек для одного проекта и они будут персонализированными. То есть условный лид или проджект менеджер могут настроить себе kanban колоночки, а люди, которых это отвращает, могут использовать ту вьюху, которая им удобна. По дефолту это просто список задач с приоретизацией по их статусам.
Ретроспективно я думаю, что на одной из прошлых работ эта последняя фича очень бы зашла.
Мигриться я никого не призываю. Потому что не в курсе сравнения цен.
Да, я разобралась почему у меня не все задачи отображались при переносе github projects - linear (почти все ушло в архив почему-то), но не знаю, как будет вести себя миграция тикетов на больших объемах.
⭐️ отличная интеграция с PR-ами в github, которая сразу работает, так как надо (и ты не сношаешься в попытках все настроить нормально) ⭐️
linear.app
Linear – Plan and build products
Linear streamlines issues, projects, and roadmaps. Purpose-built for modern product development.
На позапрошлой неделе произошли сразу две вещи, которые напомнили мне о важности принципа “подстелить соломку”.
Во-первых, впервые за 13 лет лег Braze (платформа для маркетинговый инструментов всяких и менеджментом рассылки сообщений по все возможным каналам). И лег он на 11 часов.
Сам постмортем достаточно интересно написан. Оказывается, что 29 апреля некорректно произошло перенаправление трафика с поломавшегося свича. И все упало, абсолютно все.
А хорошо не стало, когда починили эту проблему, из-за Монги. Такие дела.
Во-вторых, Google случайно удалил аккаунт в google cloud Пенсионного фонда из Австралии. Бывают и такие случайности. Кто на проде деньги не факапил?
За пенсионеров вроде бы волноваться не стоит, т.к. UniSuper сообщили, что начали восстанавливать данные из бекапов. Искренне надеюсь, что там все получилось, и пенсионеры не останутся без денег.
В обоих случаях повалилась интеграция с сервис провайдером. Даже так: с надежным сервис провайдером. И это знак свыше, что даже если мы доверяем и рассчитываем на безотказность стороннего сервиса, который поддерживает репутацию надежного, то стоит заняться минимальным риск-менеджментом и подумать, а что будет, если с этим сервисом что-то случится.
Если не реализовывать дублирующую страхующую функциональность, то хотя бы иметь под рукой план, который позволит в менее нервном режиме решить проблему.
Лучший пример, конечно, был в самом начале covid’19. Детали я забыла, но chatGPT мне подсказывает (т.е. возможно, что меня обманули), что именно BlackRock в самом начале эпидемии лучше всего среагировала на все происходящее. Потому что заранее подготовила сценарии поведения для всевозможных кризисов.
К таким глобальным событиям нам обычно готовиться не надо. Но кажется, что стоит подумать, как можно будет быстро компенсировать, допустим, отвалившееся API каких-нибудь карт, если вы только на его основании собираете адрес для доставки товара пользователю.
Во-первых, впервые за 13 лет лег Braze (платформа для маркетинговый инструментов всяких и менеджментом рассылки сообщений по все возможным каналам). И лег он на 11 часов.
Сам постмортем достаточно интересно написан. Оказывается, что 29 апреля некорректно произошло перенаправление трафика с поломавшегося свича. И все упало, абсолютно все.
А хорошо не стало, когда починили эту проблему, из-за Монги. Такие дела.
Во-вторых, Google случайно удалил аккаунт в google cloud Пенсионного фонда из Австралии. Бывают и такие случайности. Кто на проде деньги не факапил?
За пенсионеров вроде бы волноваться не стоит, т.к. UniSuper сообщили, что начали восстанавливать данные из бекапов. Искренне надеюсь, что там все получилось, и пенсионеры не останутся без денег.
В обоих случаях повалилась интеграция с сервис провайдером. Даже так: с надежным сервис провайдером. И это знак свыше, что даже если мы доверяем и рассчитываем на безотказность стороннего сервиса, который поддерживает репутацию надежного, то стоит заняться минимальным риск-менеджментом и подумать, а что будет, если с этим сервисом что-то случится.
Если не реализовывать дублирующую страхующую функциональность, то хотя бы иметь под рукой план, который позволит в менее нервном режиме решить проблему.
Лучший пример, конечно, был в самом начале covid’19. Детали я забыла, но chatGPT мне подсказывает (т.е. возможно, что меня обманули), что именно BlackRock в самом начале эпидемии лучше всего среагировала на все происходящее. Потому что заранее подготовила сценарии поведения для всевозможных кризисов.
К таким глобальным событиям нам обычно готовиться не надо. Но кажется, что стоит подумать, как можно будет быстро компенсировать, допустим, отвалившееся API каких-нибудь карт, если вы только на его основании собираете адрес для доставки товара пользователю.
Braze
The April 29 Braze Outage: What Happened, Why It Occurred, and How…
Braze suffered a major outage associated with our US clusters on April 29, 2024. To help our customers better understand what happened, Braze Cofounder and CTO Jon Hyman explores the causes of the outage and lays out how future issues will be prevented.
Для меня неожиданным оказалось следующее поведение в pydantic выше 2.6.4:
У пайдентик класса, который наследуется от BaseModel есть классовый метод
Еще из нового в v2 ввели анотацию
И вот для декоратора я, конечно, плохо прочитала доки, поэтому почти везде функции валидации не возвращали ничего.
Соответственно
Понадобилось много времени, чтобы понять, что если я пытаюсь отвалидировать модель, для которой есть функция с
Урок: если тебе дают сделать штуку, которая выглядит не очень, это не значит, что все будет работать как швейцарские часы!
У пайдентик класса, который наследуется от BaseModel есть классовый метод
model_validate()
. Возвращает он, как написано, The validated model instance.
если все успешно обработалось. Если что-то пошло не так, то мы получим ValidationError.Еще из нового в v2 ввели анотацию
@model_validator
, которая позволяет удобнее писать кастомные правила для валидации модели.И вот для декоратора я, конечно, плохо прочитала доки, поэтому почти везде функции валидации не возвращали ничего.
Соответственно
model_validate()
я использовала, чтобы получить объект класса и работать уже с ним, а не с dict.Понадобилось много времени, чтобы понять, что если я пытаюсь отвалидировать модель, для которой есть функция с
@model_validator
(которая возвращает н и ч е г о), то поэтому и model_validate()
мне вернет None.Урок: если тебе дают сделать штуку, которая выглядит не очень, это не значит, что все будет работать как швейцарские часы!
Внимание вопрос, а как так можно хранить резервные копии БД, что их тоже пожрет вирь? 🤔
То есть я не очень глубоко знаю тему. И почитала бы что-то про лучшие и худшие практики:
- где хранить
- как часто снепшотать
- что есть по вариантам накатки
То есть я не очень глубоко знаю тему. И почитала бы что-то про лучшие и худшие практики:
- где хранить
- как часто снепшотать
- что есть по вариантам накатки
Forwarded from ND - Новости Дня
СДЭК взломали. Проукраинская хакерская группировка взялась на себя ответственность за это
Выяснилось, что хакеры из Head Mare зашифровали все базы данных службы доставки и не выдвинули никаких требований. Резервные копии делались раз в полгода и они тоже зашифрованы вирусом. Служба доставки не работает уже три дня.
Утром 28 мая СДЭК объявила, что пока "не готова возобновить обслуживание": "В течение понедельника мы значительно продвинулись в восстановлении полноценной работы, но, к сожалению, не готовы возобновить техническое обслуживание. Команда СДЭК приносит искренние извинения всем клиентам, ожидания мы не оправдали".
Новости Дня
Выяснилось, что хакеры из Head Mare зашифровали все базы данных службы доставки и не выдвинули никаких требований. Резервные копии делались раз в полгода и они тоже зашифрованы вирусом. Служба доставки не работает уже три дня.
Утром 28 мая СДЭК объявила, что пока "не готова возобновить обслуживание": "В течение понедельника мы значительно продвинулись в восстановлении полноценной работы, но, к сожалению, не готовы возобновить техническое обслуживание. Команда СДЭК приносит искренние извинения всем клиентам, ожидания мы не оправдали".
Новости Дня
Я тут дожала себя и опубликовала статью про то как ревьюить код 😄
Получилось много и без картинок. Зато я потренировалась в английском писменном и у меня были потрясные ревьюеры.
Как говорится, мне нужны ваши лайки и просмотры 💜 (я правда считаю, что вышло неплохо)
https://dev.to/nadia/how-to-review-as-a-pro-59a0
Получилось много и без картинок. Зато я потренировалась в английском писменном и у меня были потрясные ревьюеры.
Как говорится, мне нужны ваши лайки и просмотры 💜 (я правда считаю, что вышло неплохо)
https://dev.to/nadia/how-to-review-as-a-pro-59a0
DEV Community
How to review as a Pro
There is some dispute about whether it is worth having a code review as a step inside the development...