В версии 2 pydentic, некоторые методы изменились, поэтому, чтобы у вас все заработало так, как у автора на 18:36, вам следует поменять parse_obj на model_validate, а декоратор validator на field_validator.
@@подопечныйПавлаЛекомцева from pydantic import BaseModel, field_validator, ValidationError from src.enums.user_enum import UserEnum from src.enums.user_enum import Status class Post(BaseModel): id: int @field_validator("id") def validate_id_less_than_zero(cls, v): if v < 0: raise ValueError("id must greater then zero") return v
удобно в логи писать еще curl упавшего запроса (формировать через отдельную функцию). позволяет например на предпроде быстро иметь под рукой то, что можно передать разработчику
Привет! В уроке ты разбираешь объект data. А можешь пожалуйста рассказать как описать объект meta? Ведь там есть вложенные объекты pagination и links. Очень интересно увидеть как будут описаны данные типы в pydantic
@SolveMe спасибо огромное за такой титанический труд! Подскажи пожалуйста: соблюдаю четко структуру проекта как у тебя в видео. Но при запуске через pytest или python постоянно вьілетают ошибки с импортом: ModuleNotFoundError: No module named 'src' Что с ним не так?? Уже замучался))
Привет дружище, посмотри, есть ли у тебя __init__.py в этой директории? Если нету, то нужно создать, иначе python не рассматривает её как пакет и ругается)
@@indarsnab А можете зайти к нам в канал и скинуть скриншот вашего репозитория и то, как вы запускаете? Так мы точно порешаем проблемку)) t.me/automation_testing_with_solveme
А как быть, если в тесте падает две проверки? В отчет попадает только первая, и если не разбираться, то второй ошибки не видно.. видимо после первой тест прекращает дальнейшие проверки?
Всегда пожалуйста)) Да, в планах BDD тестирование и UI, но я ещё конкретно не решил, что именно мы будем рассматривать, playwright или же чистый selenium
Привет, спасибо большое за уроки, очень полезны! Не совсем понял, зачем мы сначала завели отдельный класс для ошибок, а потом описали их же в доп. функции __str__ Может информация будет в дальнейшем, но пока небольшая каша по поводу того, какая структура у проекта) Если дальше этого нет, было бы полезно почитать и посмотреть
Привет)) Всё верно, сначала мы использовали ENUM класс, где лежали все наши ошибки, но потом немного оптимизировали это дело. Представим обычный день, вы запускаете тесты и получаете ошибку, довольно практично и информативно, но в любом случае, было бы не плохо получить ещё больше информации о том, куда мы отправили реквест, какие данные, какие хедеры и что нам вернулось. По-этому мы изменили тактику и вместо ошибок начали возвращать сам инстанс респонса, при этом изменив __str__ метод так, чтобы выжать максимум информации. При этом никто не мещает заменить просто self, на что-то такое f"{self}, Error: {Errors.SomeError.value}", убив обоих зайцев ))
Если хотите сделать класс Response универсальным, можно в конструктор передавать json_key который нужен для парсинга. def __init__(self, response, json_key): self.response = response self.response_json = response.json().get(f'{json_key}') self.response_status_code = response.status_code затем при вызове скармливаете тот ключ, который нужно обработать Если у кого есть более интересный метод, жду коммента. Спасибо!
Добрый день! Подскажите как работает принцип, к примеру class User(BaseModel): если я в нем указываю id: str то у меня не падает модель с ошибкой...так как id у нас int. тогда зачем мы задаем в схеме все значения? Спасибо, заранее за ответ!
На Mac комбинация клавиш: Command + /. По умолчанию обычной так. На других системах Linux/Windows это обычно Shift + /. Если не работает, то помогут только настройки :(
Здравствуйте, к сожалению нет, так как особо времени свободного нету. Думаю создать группу в телеграмм, чтобы мы все могли поговорить о каких-то глобальных проблемах и рассказать о своих.
Привет, мы создали точно такую же штуку, только с кучей ендпоинтов, фич и ендпоинтов с багами, где мы все можем практиковатся в написании тестов. Вот ссылка: send-request.me/ А вот видео, где я детально описываю то, что там есть :) ua-cam.com/video/r927KmqKALA/v-deo.html&ab_channel=SolveMe
Привет) Вродь у меня нету таких расширений для Pycharm. Иногда бывает когда я полностью не скопировал JSON или когда копировал не из консоли, а например из сообщения в Slack, который заменяет обычные кавычки на какие-то другие, которые мешают нормальному отображению.
Добрый день, эта ошибка мелькнула где-то в видео? Если да, не могли бы ли вы скинуть таймфрейм, а то я, что-то не могу найти :) Если вкратце, то ничего страшного, так как переопределение методов в наследники это обычное дело в программировании))
В версии 2 pydentic, некоторые методы изменились, поэтому, чтобы у вас все заработало так, как у автора на 18:36, вам следует поменять parse_obj на model_validate, а декоратор validator на field_validator.
не помогло
Привет, не подскажешь, как исправил?@@NighTLife130
@@подопечныйПавлаЛекомцева from pydantic import BaseModel, field_validator, ValidationError
from src.enums.user_enum import UserEnum
from src.enums.user_enum import Status
class Post(BaseModel):
id: int
@field_validator("id")
def validate_id_less_than_zero(cls, v):
if v < 0:
raise ValueError("id must greater then zero")
return v
За годный контент не жалко и лайк поставить, тем более когда такая годнота подъехала 🤘
Спасибо большое))) Обнял -> Приподнял))
самое лучшее видео по pytest
удобно в логи писать еще curl упавшего запроса (формировать через отдельную функцию).
позволяет например на предпроде быстро иметь под рукой то, что можно передать разработчику
Чувук ты крут !!! курс супер то что искал очень долго!
Всегда пожалуйста)))
Many thanks for your videos man !! it really helps a lot (sorry , no Russian fonts here) Big Like.
За self и str спасибо, полезную инфу узнал )
Спасибо за отличный плейлист. Воды мало, пользы много
Всегда пожалуйста :)
Начало видео прям от души ) инфа топ, за github отдельное спасибо, все четко еще и с комментариями на двух языках.
Всегда пожалуйста :)
Очень классные уроки, заходят на ура. Спасибо за труд!
Всегда пожалуйста))
Тебе спасибо, товарищ!
да спасибо, четко все
Спасибо Вам за видосы
Всегда пожалуйста :)
Привет!
В уроке ты разбираешь объект data. А можешь пожалуйста рассказать как описать объект meta? Ведь там есть вложенные объекты pagination и links. Очень интересно увидеть как будут описаны данные типы в pydantic
@SolveMe спасибо огромное за такой титанический труд!
Подскажи пожалуйста: соблюдаю четко структуру проекта как у тебя в видео. Но при запуске через pytest или python постоянно вьілетают ошибки с импортом: ModuleNotFoundError: No module named 'src'
Что с ним не так?? Уже замучался))
Привет дружище, посмотри, есть ли у тебя __init__.py в этой директории? Если нету, то нужно создать, иначе python не рассматривает её как пакет и ругается)
@@SolveMeChannel Во всех дерикториях есть __init__.py, все папки создаю как у тебя на видео - через New -> Python Package
@@SolveMeChannel Братик, помоги, кроме тебя никто мне не поможет)
@@indarsnab А можете зайти к нам в канал и скинуть скриншот вашего репозитория и то, как вы запускаете? Так мы точно порешаем проблемку)) t.me/automation_testing_with_solveme
Привет, а укого появляется ошибка 'NoneType' object has no attribute 'validate' подскажите как исправить
А как быть, если в тесте падает две проверки? В отчет попадает только первая, и если не разбираться, то второй ошибки не видно.. видимо после первой тест прекращает дальнейшие проверки?
круто, спасибо
Спасибо за уроки хотелось бы узнать а будет ли UI в программе обучения ?
Всегда пожалуйста))
Да, в планах BDD тестирование и UI, но я ещё конкретно не решил, что именно мы будем рассматривать, playwright или же чистый selenium
@@SolveMeChannel Привет! Playwright конечно! :)
По Selenium и так куча уроков в рунете, а вот по Playwright отнюдь
@@SolveMeChannel playwright было бы супер!
Привет, спасибо большое за уроки, очень полезны!
Не совсем понял, зачем мы сначала завели отдельный класс для ошибок, а потом описали их же в доп. функции __str__
Может информация будет в дальнейшем, но пока небольшая каша по поводу того, какая структура у проекта) Если дальше этого нет, было бы полезно почитать и посмотреть
Привет))
Всё верно, сначала мы использовали ENUM класс, где лежали все наши ошибки, но потом немного оптимизировали это дело.
Представим обычный день, вы запускаете тесты и получаете ошибку, довольно практично и информативно, но в любом случае, было бы не плохо получить ещё больше информации о том, куда мы отправили реквест, какие данные, какие хедеры и что нам вернулось. По-этому мы изменили тактику и вместо ошибок начали возвращать сам инстанс респонса, при этом изменив __str__ метод так, чтобы выжать максимум информации.
При этом никто не мещает заменить просто self, на что-то такое f"{self}, Error: {Errors.SomeError.value}", убив обоих зайцев ))
Если хотите сделать класс Response универсальным, можно в конструктор передавать json_key который нужен для парсинга.
def __init__(self, response, json_key):
self.response = response
self.response_json = response.json().get(f'{json_key}')
self.response_status_code = response.status_code
затем при вызове скармливаете тот ключ, который нужно обработать
Если у кого есть более интересный метод, жду коммента.
Спасибо!
Добрый день!
Подскажите как работает принцип, к примеру class User(BaseModel):
если я в нем указываю id: str то у меня не падает модель с ошибкой...так как id у нас int.
тогда зачем мы задаем в схеме все значения?
Спасибо, заранее за ответ!
с нетерпением буду ждать ваш ответ!
Четкие видосы!
а зачем в gender используется Enum?
можно ли использовать
gender: Literal["female', 'male']
Как ты комментишь/раскомментишь несколько строк при выделении?
На Mac комбинация клавиш: Command + /. По умолчанию обычной так. На других системах Linux/Windows это обычно Shift + /. Если не работает, то помогут только настройки :(
На винде бывает Ctrl+/
Про зірочок прям хихикнул
Классно, продолжай!
Спасибо :)
А вы менторством занимаетесь? Было бы хорошо один на один с вами поучиться
Здравствуйте, к сожалению нет, так как особо времени свободного нету. Думаю создать группу в телеграмм, чтобы мы все могли поговорить о каких-то глобальных проблемах и рассказать о своих.
Линк перестал работать
Привет, мы создали точно такую же штуку, только с кучей ендпоинтов, фич и ендпоинтов с багами, где мы все можем практиковатся в написании тестов.
Вот ссылка:
send-request.me/
А вот видео, где я детально описываю то, что там есть :)
ua-cam.com/video/r927KmqKALA/v-deo.html&ab_channel=SolveMe
Когда из консоли копирую весь json и вставляю в код, то у меня он так и остается строкой. Это расширение, чтобы он сразу делился на части?
Привет) Вродь у меня нету таких расширений для Pycharm. Иногда бывает когда я полностью не скопировал JSON или когда копировал не из консоли, а например из сообщения в Slack, который заменяет обычные кавычки на какие-то другие, которые мешают нормальному отображению.
@@SolveMeChannel а пайчарм комьюнити, или проф?
Проф версия
@@SolveMeChannel значит из-за этого. Ну окей, спасибо за информацию
@@yanalsheuski263 у меня ещё vscode кстати есть, там такой штуки нету. Попробуй в нём это воспроизвести
А что за предупреждение? Overrides method in object.
Добрый день, эта ошибка мелькнула где-то в видео? Если да, не могли бы ли вы скинуть таймфрейм, а то я, что-то не могу найти :) Если вкратце, то ничего страшного, так как переопределение методов в наследники это обычное дело в программировании))
Заметка , если хотите сделать не обязательное поле в Базовой модели используйте Optional из typing. id: Optional[int]
Добрый день)
Спасибо большое, это очень хорошее замечание)