Git, Git Flow, TDD #3 - Введение в TDD и тестирование в Python

Поделиться
HTML-код
  • Опубликовано: 30 сен 2024
  • Мои курсы:
    Boosty:
    boosty.to/omol...
    Patreon:
    / karty-vsekh-41011404
    Разработка через тестирование (TDD) - зачем нужно писать тесты, зачем писать тесты до основного кода. Небольшой пример написания функции в стиле TDD. Используется фреймворк Unittest на Python 3.
    Разработка через написание тестов (TDD) проходит через три стадии:
    Red, Green, Refactoring
    RED. Написали тест к функционалу, которого еще нет. Запустили - он провалился.
    GREEN. Написали целевую (тестируемую) функцию. Задача на этом этапе сделать так, чтобы функция проходила тест. После того, как функция (или класс) - unit'ы, пройдут тест, переходим к следующему этапу.
    REFACTORING. Нужно привести функцию в порядок, сделать более универсальной, упростить если нужно и т.п. Словом, рефакторинг. Запустили тесты - проходят? Делаем комит. Если нет - правим баги, благо с тестами это делать проще.
    Это третья часть из трех, посвященных этой теме.
    1. Основы Git - что такое Git, принцип его работы, создание репозитория, добавление файлов, создание комитов, залив проекта на github (push)
    2. Git Flow - принципиальная схема при работе с ветками с ветками Git. Как создавать ветки, переключаться между ними, сливать ветки. Merge, rebase.
    3. Введение в TDD - строго говоря, TDD не относится к работе с Git'ом, но, тем не менее, больше нет TDD без Git'а или любой другой системы контроля версий исходного кода.
    ** ИСХОДНЫЙ КОД **
    Основных проектов доступен в Patreon:
    / iskhodnyi-kod-26640469
    ***
    ------
    Все видео серии:
    Git, Git Flow, TDD #1 - Что нужно знать о работе с Git
    • Git, Git Flow, TDD #1 ...
    Git, Git Flow, TDD #2 - Git Flow: Основы работы с ветками в Git
    • Git, Git Flow, TDD #2 ...
    Git, Git Flow, TDD #3 - Введение в TDD и тестирование в Python
    • Git, Git Flow, TDD #3 ...
    Обязательно подпишитесь на канал!
    ------
    🔷 Для донатов. Всегда очень признателен за это:
    www.donational...

Комментарии • 43

  • @dobr.dennis
    @dobr.dennis 6 лет назад +12

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

    • @zaemiel
      @zaemiel  6 лет назад +7

      Спасибо. Да, как-нибудь дойдем и до Докера

  • @schrittweise
    @schrittweise 5 лет назад +6

    Отличное видео. Спасибо! Был бы благодарен, если бы бы развернутая серия по тестам.

  • @viktorskurko
    @viktorskurko 6 лет назад +6

    Как всегда на высоте!
    Олег, я вот тут книжечку купил занимательную "Python Разработка на основе тестирования" Гарри Персиваль. Но не все получается, а спросить не у кого...
    Было бы круто, если бы ты со своим талантом преподавателя сделал бы курс по TDD на ее основе. Я бы купил не парясь тысяч за 5-7. А если бы курсы открыл с выдачей видеоматериалов, домашек и консультациями по скайпу, например - думаю, что легко бы набрал группу желающих и там уже около 15000 мог бы собирать. Запиши ролик-опросник - полагаю моя просьба найдет поддержку. Заодно и цену предложенную исследуешь. По TDD лично я ничего не нашел из наших инфобизнесменов.

  • @acerrusm
    @acerrusm 6 лет назад +4

    Если бы еще проджакт менеджеры понимали всю необходимость тестирования, а то "это же трата времени"

    • @colonizatorgg5960
      @colonizatorgg5960 4 года назад +1

      я думаю их место на кассе в магните, если уж нет нужной квалификации

  • @Arseniysham
    @Arseniysham 6 лет назад +2

    Не могу понять, как это работает, ведь os.getcwd() вернёт абсолютный путь к директории tests. По логике вещей тут должно быть что-то типа sys.path.append(os.path.dirname(os.getcwd()))

    • @conceptroot
      @conceptroot 4 года назад

      Думаю это потому, что Олег вызывает тесты из корневой папки проекта.

    • @ch.sergey
      @ch.sergey 2 года назад

      возможно, у автора при запуске через atom настроено автоматическое добавление в PYTHONPATH рут директории. Например, у меня в Pycharm так настроено.
      Если запускать через консоль, то да - там нужно делать как указанно у вас через os.path.dirname

  • @hopelesssuprem1867
    @hopelesssuprem1867 2 года назад

    видосы олега нравятся, но честно, по тестам очень слабо

  • @dmmeteo
    @dmmeteo 5 лет назад +1

    видео про GIT - да
    видео про TDD - да
    Вот тебе тест кейс, подумай где он упадет)

  • @maxyc.webber
    @maxyc.webber 3 года назад

    Что то не догнал почему это в гит флоу

  • @warnabas
    @warnabas 6 лет назад +1

    у меня не импортировалось как у автора:
    import sys
    sys.path.append('../')
    этот код решил проблему, и только один модуль пришлось импортировать.

    • @triders
      @triders 4 года назад

      Спасибо, помогло

  • @keepsilence6843
    @keepsilence6843 6 лет назад +3

    Ащще отлично, спасибо, Олег!

    • @zaemiel
      @zaemiel  6 лет назад

      Спасибо, рад, что вам нравится

  • @andreybalin9314
    @andreybalin9314 3 года назад +1

    Короче, Склифосовский

  • @sainco3036
    @sainco3036 6 лет назад +3

    Спасибо, хорошее видео.

    • @zaemiel
      @zaemiel  6 лет назад

      Рад, что вам нравится

  • @core__dump
    @core__dump 4 года назад

    Добавлю взгляд на TDD с другой стороны баррикад: ruclips.net/video/sLWURdgEcrI/видео.html

  • @tokid7941
    @tokid7941 2 года назад

    Очень крутые видео! Было бы здорово увидеть аналогичную серию по хукам.

  • @ИгорьУ-е5й
    @ИгорьУ-е5й 2 года назад

    Спасибо за уроки. Но есть вопросы, не показано, каким образом осуществлять "откат" на предыдущие версии. Например, и как при слиянии отказаться от каких то изменений.

  • @Mr43046721
    @Mr43046721 4 года назад

    Спасибо большое за внятный материал! Хоть сам и прогаю на C#, было очень интересно и главное, понятно.

  • @2LazySnake
    @2LazySnake 3 года назад

    Спасибо за видео. Очень жду серию про тестирование и серию про докер.

  • @Игорь-п8ф1е
    @Игорь-п8ф1е 4 года назад

    Очень интересно было бы посмотреть еще про тестирование , особенно на pytest

  • @jamesmiller2521
    @jamesmiller2521 4 года назад

    О господи, единственное понятное видео о тестах на ютубе! Спасибо!

  • @shevtchouk
    @shevtchouk 3 года назад

    За капокопполу отдельный лайк!

  • @34alexed
    @34alexed 5 лет назад

    у меня эта конструкция не работала
    sys.path.append(os.getcwd())
    from main import *
    сработала
    from testing.main import *

    • @2LazySnake
      @2LazySnake 3 года назад

      Дело, вероятно, в том, из какой директории запускался код. При запуске из testing нормально всё отработало.

  • @РусланКнутас-х4с
    @РусланКнутас-х4с 6 лет назад

    Спасибо, успехов в ваших начинаниях.

  • @vanya15369
    @vanya15369 6 лет назад

    Полезное видео. Хотелось бы добавить, что, наверное, не следует возвращать ноль если на вход пришла строка. С одной стороны, конечно, функция получилась бронебойная, а с другой стороны получился JS)

    • @zaemiel
      @zaemiel  6 лет назад

      Просто пример.

    • @aleksprimetv
      @aleksprimetv 5 лет назад

      в JS не пустая строка возвращает 1, а пустая 0.

  • @NMelis
    @NMelis 6 лет назад

    можете как нибудь убрать звуки нажатие клавиш клавиатуры?
    И еще почему не юзаете автодополнение даже в баше

    • @zaemiel
      @zaemiel  6 лет назад +5

      автодополнение в терминале я использую и это не bash.
      Звуки клавы убрать не могу и, честно говоря, не вижу в этом никакого практического смысла.

    • @adiletjoldoshbekuulu540
      @adiletjoldoshbekuulu540 2 года назад

      @@zaemiel наоборот со звуком клавиатуры лучше, интуитивно ощущается в какой части экрана идет печатание.
      так что не слушайте никого, продолжайте в таком же духе.

  • @WebmasterEsc
    @WebmasterEsc 6 лет назад

    return int(m / 100)

    • @zaemiel
      @zaemiel  6 лет назад

      Что это и к чему это?

    • @WebmasterEsc
      @WebmasterEsc 6 лет назад

      рефакторинг

    • @zaemiel
      @zaemiel  6 лет назад +1

      нет, это не рефакторинг.
      Чтобы ответить на вопрос почему это не рефакторинг, вам придется ответить на вопрос зачем это нужно.
      И назвать как минимум 3 причины почему этого нельзя делать.

    • @WebmasterEsc
      @WebmasterEsc 6 лет назад

      не вижу проблемы сократить дробь, ибо 10 * m / 1000 == m / 100

    • @zaemiel
      @zaemiel  6 лет назад +8

      мы же не о сокращении дробей говорим. Мы говорим о рефакторинге кода.
      Разве вы не видите, что 10 - это переменная?
      Во всех случаях используется только одна формула, в которой меняется масса m и масса ингридиента.
      Если рецепт будет другим (а он может быть другим), то разграмовка по игридиентам изменится. Более того, могут добавиться другие ингридиенты.
      Если сделать так, как предлагаете вы, то потеряется смысл формулы. Из нее автоматом выпадет важный элемент. И чего вы этим добиваетесь? Поэтому я сразу спросил о целях этого сокращения.
      В данном конкретном случае рефакторингом было бы объединить ВСЕ функции по расчетам разграмовки В ОДНУ функцию.
      Вот и придумайте, как это сделать.
      Не забудьте, кстати, вначале тесты написать.