Во-первых, «Story in a game is like a story in a porn movie. It's expected to be there, but it's not that important». А во-вторых, в вашей статье не уточнено, что разговор конкретно про шутеры, равно как и в словах Кармака.
Да тьма сюжетных была. Те же jrpg в конце концов. Кажись даже седьмая финалфентези раньше вышла. А до неё была и шикарная шестая часть. Я помню в resident evil играл на первой плойке в 97 году. Возможно даже все уже знали о Ларке Крофт.
Да, именно поэтому. Запланился с вечера и спокойно живешь до утра не забивая себе голову проблемами дня грядущего. А Дорофеев это который "Джедаиские техники"?
Чтобы не потерять контекст, я записываю видео созвонов.
Теперь буду знать, что на созвоны с ПМами надо надевать свой лучший прикид на всякий случай
Теперь в начале дня несколько минут я посвящаю составлению плана на день.
Я с некоторых пор планируюсь с вечера на следующий день. Но возможно, что у меня просто своя специфика. Но так как в календарь может налететь что-то новое пока я афк, то с утра просто корректирую свой "планинг" под объективную реальность.
Для этого под рукой держу блокнот, выписываю задачи, которые в процессе.
Тож так делаю. Много лет уж так. Но у меня он подо все в этой жизни - и под план размещения грядок на участке, и под новую схему ci на проекте.
Чет прям настольгическую слезу чуть не уровнил. Люблю не онлайн игры (особо старые) потому что они не пытаются развести тебя на деньги нон-стопом спекулитивными игровыми механиками. Играл и раньше, играю и сейчас - знаком с вопросом того как было, и то как сейчас это работает во всяких форнайтах. Единственное, во что не могу играть в этой жизни - в мобильные баблососки с глянцевым графеном.
Речь же не о том, "что лучше". Ровно наоборот, основной тезис - в обеих культурах можно подсмотреть полезные принципы и подходы, так что не игнорируйте их.
Вот под таким углом для меня статья новыми красками заиграла. Но я как-то не уловил этого по тексту.
Какая-то графомания на давно известные холиварные темы. Только этот пост тот случай когда срачик даже разводить не хочется. Не знаю даже зачем я это прочитал. Да и на мой взгляд, в современном мире, культуры явно не две - бывают еще фронтовики со своими оттенками бегающих в головах тараканов, несколько сортов датасатанистов, программисты только кастующие одни джейсонки в другие и тд, и тп.
Заголовок с амбициями конечно :) Что такое "правильно", а что такое нет - это тот еще вопрос.
Когда мы пишем API автотесты, то нам хотелось бы, чтобы они отвечали требованиям…
И ниже перечислен список требований не к тестам, а к позитивному случаю конкретного теста. Вообще, требования к автотестам на АПИ это тема, которая может вытянуть на отдельную статью (я бы такую почитал с удовольствием), и должна затрагивать не так канкретные шаги в тест-кейсе как методологию выбора тест-кейсов и проверки в том или ином случае.
“Наш QA Automation ушел, поэтому теперь мы не можем даже запустить автотесты и непонятно, что в них происходит”. Это означает, что человек, написавший автотесты, писал их костыльно, как бы повышая свою ценность
Вывод явно не правильный. Если процессы построены так, что автотесты завязаны на одном человеке результат работы которого никто не ревьюит, то беда с процессами, а не с человеком. Ну и в написании кода очень много субъективного и результат может казаться одним правильным, а другим костыльным.
Еще один распространенный кейс - это когда новый QA Automation приходит на проект и сразу же хочет все переписать.
Да это старый как мир анекдот из жизни, что при смене разработчиков на любом проекте новые разрабы провозглашают все старое - устаревшим говнокодом и норовят все переписать. В автотестах все точно так же.
Requirements
Мне кажется, что в современном мире ставить зависимости пипом и без указания версий это моветон. Я бы поэтри использовал или какую другую альтернативу даже в автотестах.
Если конкретно по зависимостям, то не очень понял, почему бы джейсонки не валидировать пайдантиоком. Кстати, дотенв можно отдельно не ставить, а поставить его сразу с пайдантиком (pip install pydantic[dotenv]). За httpx лайкосик. А кстати, какие генераоторы отчетов бывают кроме алюра? Я когда-то его юзал и меня напрягало, что он не умеет статику генерить чтоб прилеплять её как артефакт (хотя может я просто сам себе злой буратино и просто не понял как это делать). Ну и в целом я не ощутил восторга от его использования.
Библиотека pydantic служит для реализации “строгой типизации” в python.
Питон и так язык со строгой типизацией. Можно здесь почитать, что такое строгая типизация и понять при чем тут питон https://habr.com/ru/post/161205/. Пайдантик, строго говоря, в современном мире используется для каста значений к указанным типам и валидации.
В качестве альтернативы pydantic можно взять библиотеку models-manager
Теплое и мягкое. Либа для моделей и ORM. В качестве альтернативы я бы рассматривал только мармелоу, но это вкусовщина и “ну такое”. Вообще, если уж коснуться темы походов из автотестов в базу, то я бы наверное использовал “сырые” запросы, но тут тоже добрая доля вкусовщины.
class Settings(BaseSettings):
Три точки не обязатально писать. Для работы с префиксами в переменных окружения в конфиг можно указать специальный параметр. И удивительно, что вы объявляете переменную в глобальном скоупе, а не засовываете её сразу в фикстуру. Кстати, в доке пайдантика настройки получают из кешированной функции и код из-за этого чуть чище кмк.
Напрашивается наследование одной модели от другой и непонятно что делает в названии класса слово default. То есть:
class DefaultQuestion(UpdateQuestion)
И я бы все-таки убрал default_factory из моделей и написал простую функцию фабрику (ну что-то в духе def make_question_model_with_random_data()) для генерации моделей с рандомными данными. Из разряда вкусовщины: люблю страшно фикстуры в пайтесте и генераторы рандомных данных в них бы упаковал завернум в алюровский декоратор с шагом, но это ну такое. Вообще, рандомные данные в тесты я не любитель пихать, но иногда без этого, конечно же не обойтись.
JSON схема генерируется автоматически на основе модели.
Валидируйте без схемы, а сразу моделью пайдантика.
По поводу if (not auth.auth_token) and (not auth.user): непонятно почему бы это не валидировать в самой модели. И в тестах прям напрашивается assert. NotImplementedError явно не к месту. Ну или на крайняк ValueError.
Поэтому не забудем добавить нашу API фикстуру в pytest_plugins
Прочитал на пару раз и так и не понял зачем мы её добавляем в pytest_plugins
ps: Далее по диагонали читал. За старание пять, а по содержимому натянутая 4ка с минусом, как по мне, и не в последнюю очередь из-за того, что заголовок намекает на вычищенность подхода, а на мой взгляд есть еще над чем работать. Готов подискутировать по своему комменту если считаете, что где-то я не прав. Про упоминание своих реп - надо бы четко обозначать, что вот сомтрите так и эдак вот моя репа и в ней то-то и то-то, а лучше даже отдельным постом с описанием того, что в либе есть и обзором плюсов и минусов своего решения.
Мне кажется, что заголовок слишком категоричен, хотя очевидно, что проблемы и вправду есть. Я правда тоже сталкивался с некоторыми проблемами, при использовании альпайна, но они тоже все были связаны с переходом на поетрю и пайдантик в проектах. С тех пор, когда это зависит от меня, использую двухэтапную сборку на базе slim контейнеров.
Я итак воспринимал эту статью как анекдот про стюардессу, а потом ещё и глазом споткнулся об это. Вы серьезно или это какие-то слои иронии?
Мама, наверняка, выступает как скрам-мастер в этой рабочей группе
Во-первых, «Story in a game is like a story in a porn movie. It's expected to be there, but it's not that important». А во-вторых, в вашей статье не уточнено, что разговор конкретно про шутеры, равно как и в словах Кармака.
Да тьма сюжетных была. Те же jrpg в конце концов. Кажись даже седьмая финалфентези раньше вышла. А до неё была и шикарная шестая часть. Я помню в resident evil играл на первой плойке в 97 году. Возможно даже все уже знали о Ларке Крофт.
Да, именно поэтому. Запланился с вечера и спокойно живешь до утра не забивая себе голову проблемами дня грядущего. А Дорофеев это который "Джедаиские техники"?
Теперь буду знать, что на созвоны с ПМами надо надевать свой лучший прикид на всякий случай
Я с некоторых пор планируюсь с вечера на следующий день. Но возможно, что у меня просто своя специфика. Но так как в календарь может налететь что-то новое пока я афк, то с утра просто корректирую свой "планинг" под объективную реальность.
Тож так делаю. Много лет уж так. Но у меня он подо все в этой жизни - и под план размещения грядок на участке, и под новую схему ci на проекте.
Ну тут не должно быть прямой зависимости. Но посмотрим как это все будет работать когда версии стабилизируются.
Почему боль? Ну будет плюс одна зависимость - вроде ничего страшного :)
Не самый очевидный момент. Это пайдантик теперь прожорливей?
А какая разница на чем оно под капотом написано если ты этого никогда не видишь и не трогаешь?
А чего в этом столь трагически плохого?
Придирка напоминает вот это:
Чет прям настольгическую слезу чуть не уровнил. Люблю не онлайн игры (особо старые) потому что они не пытаются развести тебя на деньги нон-стопом спекулитивными игровыми механиками. Играл и раньше, играю и сейчас - знаком с вопросом того как было, и то как сейчас это работает во всяких форнайтах. Единственное, во что не могу играть в этой жизни - в мобильные баблососки с глянцевым графеном.
Вот под таким углом для меня статья новыми красками заиграла. Но я как-то не уловил этого по тексту.
Какая-то графомания на давно известные холиварные темы. Только этот пост тот случай когда срачик даже разводить не хочется. Не знаю даже зачем я это прочитал. Да и на мой взгляд, в современном мире, культуры явно не две - бывают еще фронтовики со своими оттенками бегающих в головах тараканов, несколько сортов датасатанистов, программисты только кастующие одни джейсонки в другие и тд, и тп.
Заголовок с амбициями конечно :) Что такое "правильно", а что такое нет - это тот еще вопрос.
И ниже перечислен список требований не к тестам, а к позитивному случаю конкретного теста. Вообще, требования к автотестам на АПИ это тема, которая может вытянуть на отдельную статью (я бы такую почитал с удовольствием), и должна затрагивать не так канкретные шаги в тест-кейсе как методологию выбора тест-кейсов и проверки в том или ином случае.
Вывод явно не правильный. Если процессы построены так, что автотесты завязаны на одном человеке результат работы которого никто не ревьюит, то беда с процессами, а не с человеком. Ну и в написании кода очень много субъективного и результат может казаться одним правильным, а другим костыльным.
Да это старый как мир анекдот из жизни, что при смене разработчиков на любом проекте новые разрабы провозглашают все старое - устаревшим говнокодом и норовят все переписать. В автотестах все точно так же.
Мне кажется, что в современном мире ставить зависимости пипом и без указания версий это моветон. Я бы поэтри использовал или какую другую альтернативу даже в автотестах.
Если конкретно по зависимостям, то не очень понял, почему бы джейсонки не валидировать пайдантиоком. Кстати, дотенв можно отдельно не ставить, а поставить его сразу с пайдантиком (
pip install pydantic[dotenv]
). За httpx лайкосик. А кстати, какие генераоторы отчетов бывают кроме алюра? Я когда-то его юзал и меня напрягало, что он не умеет статику генерить чтоб прилеплять её как артефакт (хотя может я просто сам себе злой буратино и просто не понял как это делать). Ну и в целом я не ощутил восторга от его использования.Питон и так язык со строгой типизацией. Можно здесь почитать, что такое строгая типизация и понять при чем тут питон https://habr.com/ru/post/161205/. Пайдантик, строго говоря, в современном мире используется для каста значений к указанным типам и валидации.
Теплое и мягкое. Либа для моделей и ORM. В качестве альтернативы я бы рассматривал только мармелоу, но это вкусовщина и “ну такое”. Вообще, если уж коснуться темы походов из автотестов в базу, то я бы наверное использовал “сырые” запросы, но тут тоже добрая доля вкусовщины.
Три точки не обязатально писать. Для работы с префиксами в переменных окружения в конфиг можно указать специальный параметр. И удивительно, что вы объявляете переменную в глобальном скоупе, а не засовываете её сразу в фикстуру. Кстати, в доке пайдантика настройки получают из кешированной функции и код из-за этого чуть чище кмк.
Напрашивается наследование одной модели от другой и непонятно что делает в названии класса слово default. То есть:
class DefaultQuestion(UpdateQuestion)
И я бы все-таки убрал default_factory из моделей и написал простую функцию фабрику (ну что-то в духе
def make_question_model_with_random_data()
) для генерации моделей с рандомными данными. Из разряда вкусовщины: люблю страшно фикстуры в пайтесте и генераторы рандомных данных в них бы упаковал завернум в алюровский декоратор с шагом, но это ну такое. Вообще, рандомные данные в тесты я не любитель пихать, но иногда без этого, конечно же не обойтись.Валидируйте без схемы, а сразу моделью пайдантика.
По поводу
if (not auth.auth_token) and (not auth.user):
непонятно почему бы это не валидировать в самой модели. И в тестах прям напрашивается assert.NotImplementedError
явно не к месту. Ну или на крайняк ValueError.Прочитал на пару раз и так и не понял зачем мы её добавляем в pytest_plugins
ps: Далее по диагонали читал. За старание пять, а по содержимому натянутая 4ка с минусом, как по мне, и не в последнюю очередь из-за того, что заголовок намекает на вычищенность подхода, а на мой взгляд есть еще над чем работать. Готов подискутировать по своему комменту если считаете, что где-то я не прав. Про упоминание своих реп - надо бы четко обозначать, что вот сомтрите так и эдак вот моя репа и в ней то-то и то-то, а лучше даже отдельным постом с описанием того, что в либе есть и обзором плюсов и минусов своего решения.
Подборка не плоха, но как мне - не блещет ничем новым, и от неё немного потягивает рандомным выбором.
Мне кажется, что заголовок слишком категоричен, хотя очевидно, что проблемы и вправду есть. Я правда тоже сталкивался с некоторыми проблемами, при использовании альпайна, но они тоже все были связаны с переходом на поетрю и пайдантик в проектах. С тех пор, когда это зависит от меня, использую двухэтапную сборку на базе slim контейнеров.
Ударился оземь обернулся горлицейАвторизовался специально чтоб лайкнуть коммент. Идея достойная стартапа.
В Телеграме такое всегда было. Изменилось лишь то, что несколько лет назад это вынесли на отдельную кнопку Saved Messages.
@DimaFromMai согласен с оратором, что это странно. Зачем так сделали то?