🎓 Практический курс по Backend разработке: artemshumeiko.ru 💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
так понимаю тут ключевую роль играет параметр scope т.к у метода удаления он есть а у метода конфет его нет, то выполнится приоритетней тот у кого есть параметр scope, поэтому empty_candies выполнится раньше
В целом описано все круто, но тут идет тестирование скорее не того когда который был написан, а тестирование библиотеки. Просто у тебя в коде ты написал прокси штуку, а ее тестировать не всегда прмя надо на мой взгляд.
В коде написана абстракция для работы с базой данных. Этой абстракцией пользуется слой сервисов, который мы тестируем. И это позволяет как раз тестировать не библиотеку, а только работу слоя сервисов, который работает с данными, которые нам отдает одна библиотека (SQLAlchemy) и сериализует и валидирует другая (pydantic)
пробую этот код у себя запускать. 1ый тест проходит, 2ой (test_list_candies) выдает AssertionError. не знаю как у вас работает, но у меня, словарь != екземпляру схемы. AssertionError: assert {'id': 1, 'owner': 'Даниил', 'state': 'full', 'title': 'candy1'} in [CandySchema(id=1, title='candy1', state='full', owner='Даниил'), ...]
@@artemshumeiko в том то и дело что там нет Pydantic-схемы. в CandiesService.list(), TypeAdapter.dump_python() возвращает список словарей и тест не работает. Немного покопавшись - подозреваю что причина в коммите "upgrade pydantic". То есть тесты в видео рабочие, потому что там версия еще не та что в репозитории сейчас лежит.
это я не к тому чтоб додолбаться. Спасибо за все что ты делаешь. Пытаюсь разобраться и пока код не полностью работает остается ощущение что не разобрался в теме тестов, а тут проблема в другом.
🎓 Практический курс по Backend разработке: artemshumeiko.ru
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Очень понятно и подробно) Спасибо!
а почему не добавили фикстуру candies к параметрам usefixtures
а так же через usefixtures мы не можем использовать candies?
про параметризацию фикстур еще можно рассказать
def test_list_candies(candies, empty_candies):
Какая здесь будет последовательность выполнения фикстур? Сначала фикстура Candies или empty_candies?
так понимаю тут ключевую роль играет параметр scope т.к у метода удаления он есть а у метода конфет его нет, то выполнится приоритетней тот у кого есть параметр scope, поэтому empty_candies выполнится раньше
Добрый день! Есть ли где-то репозиторий, в котором храниться изначальный код проекта, чтобы последовательно исправлять его вместе с уроками?
Добрый день! Ссылки на репы всегда есть в описании под видео: github.com/artemonsh/pytest_course
не знаю, почему мои комментарии удаляются, но если у вас ошибка с миграциями, пропишите параметр extra='allow' в SettingsConfigDict
снова я с последовательностью видео, вы тестируете код, а я тестирую последовательность видеороликов хд, у вас уже 2 ерора
расширенный курс по тестированию будет?)
нет, постараюсь включить в этот курс максимум информации
еще бы на вопросы отвечал автор, комментов было бы больше
В целом описано все круто, но тут идет тестирование скорее не того когда который был написан, а тестирование библиотеки. Просто у тебя в коде ты написал прокси штуку, а ее тестировать не всегда прмя надо на мой взгляд.
В коде написана абстракция для работы с базой данных. Этой абстракцией пользуется слой сервисов, который мы тестируем. И это позволяет как раз тестировать не библиотеку, а только работу слоя сервисов, который работает с данными, которые нам отдает одна библиотека (SQLAlchemy) и сериализует и валидирует другая (pydantic)
пробую этот код у себя запускать. 1ый тест проходит, 2ой (test_list_candies) выдает AssertionError.
не знаю как у вас работает, но у меня, словарь != екземпляру схемы.
AssertionError: assert {'id': 1, 'owner': 'Даниил', 'state': 'full', 'title': 'candy1'} in [CandySchema(id=1, title='candy1', state='full', owner='Даниил'), ...]
Необходимо сравнивать не словарик, а Pydantic-схему
@@artemshumeiko
в том то и дело что там нет Pydantic-схемы.
в CandiesService.list(), TypeAdapter.dump_python() возвращает список словарей и тест не работает.
Немного покопавшись - подозреваю что причина в коммите "upgrade pydantic".
То есть тесты в видео рабочие, потому что там версия еще не та что в репозитории сейчас лежит.
это я не к тому чтоб додолбаться. Спасибо за все что ты делаешь.
Пытаюсь разобраться и пока код не полностью работает остается ощущение что не разобрался в теме тестов, а тут проблема в другом.
У меня тоже самое, что с этим сделали?
Я в CandiesService.list(), вместо TypeAdapter.dump_python() сделал TypeAdapter.validate_python(). Вроде работает)