Юнит-тестирование. Использование unittest и coverage в PyCharm

  Рет қаралды 35,119

Python Russian

Python Russian

3 жыл бұрын

Подписчики просили рассказать о юнит-тестировании, делаю первый шаг в этом направлении. Тесты нужно писать обязательно, это единственное доказательство того, что ваш код работает.
Преимущества тестов:
- доказывают что код работает
- актуальная "документация"
- экономия нервов и времени на поддержке и рефакторинге
Порядок действий:
1) создаем папку tests (не пакет!)
2) создаем модуль в стиле функция_test.py
3) сначала пишем позитивные тесты (те, где все хорошо)
4) тест должен быть сначала красный, проверяем что он проверяет что нужно
5) не забываем покрывать тестами ветки условий и исключений
6) после каждого действия или изменения запускаем тесты
7) создаем конфигурацию запуска всех тестов
8) используем покрытие кода (code coverage) как информацию о том, что не покрыто тестами
9) при рефакторинге постоянно запускаем тесты
docs.python.org/3/library/uni...
Присоединяйтесь к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm

Пікірлер: 116
@PythonRussian
@PythonRussian 3 жыл бұрын
интересно продолжение темы юнитов?
@user-en5ue8gp2u
@user-en5ue8gp2u 2 жыл бұрын
Отличное видео. Пересмотрел штук 10 видео по unittest-ам, но только это видео сформировало полную картину происходящего. Спасибо, жду продолжение с нетерпением)
@PythonRussian
@PythonRussian 2 жыл бұрын
@@user-en5ue8gp2u сделаю в ближайшее время
@exe88cution
@exe88cution 2 жыл бұрын
Естественно! Очень классно всё рассказано, не первое Ваше видео смотрю, единственное что, немного погромче бы)
@PythonRussian
@PythonRussian 2 жыл бұрын
@@exe88cution да со звуком чего нибудь подумаю. По тестам будет продолжение -углубление по юниттесту и посмотрим на питест.
@edgull_tlt
@edgull_tlt 2 жыл бұрын
Конечно!
@petrovsky1982
@petrovsky1982 Жыл бұрын
Отличный урок! Понравилось то, что автор не лезет в охват всего и вся. Чётко показывает: что и как работает, как соединяются тесты и сама программа. В общем лайк. Мне unittest как раз понравился тем, что он встроенный в Python. Спасибо! Пожалуйста продолжайте!
@alley1180
@alley1180 2 жыл бұрын
Супер! Спасибо. Хочется продолжения темы. У вас талант, объясняете очень доходчево.
@bro_webman
@bro_webman Жыл бұрын
Спасибо за контент, нашёл просто кучу ответов на свои вопросы, с которыми столкнулся в процессе погружения в питон. Особенная благодарность за тесты и гит, наглядно и доступно. Успехов в развитии и большая просьба не останавливаться у вас очень хорошо получается!)
@Trezvy_Papa
@Trezvy_Papa 3 ай бұрын
Всё. Перехожу с асертов на юниты. Прям огромное желание появилось юнит тесты писать. Благодарю
@PythonRussian
@PythonRussian 3 ай бұрын
на самом деле это очень полезное желание, я сейчас без этого просто проект никакой не начинаю, потому что его просто потом сложно поддерживать, менять, рефакторить. Нет уверенности после правок, а с тестами, если не лениться и набраться опыта есть уверенность в том, что все сделано верно.
@Trezvy_Papa
@Trezvy_Papa 3 ай бұрын
​@@PythonRussianнаписал несколько. Глаз радуется этим зелёным галочкам. Рад, как ребенок, что у меня теперь будут нормальные тесты. Осталось coverage подключить.
@Ordinary_man2049
@Ordinary_man2049 Жыл бұрын
Спасибо большое. Смотрю уроки с огромным интересом!
@user-lx3qj6nz9m
@user-lx3qj6nz9m 5 ай бұрын
Для меня, как для начинающего программиста языка Python все очень даже понятно и интересно! спасибо тебе за урок
@umni_kot
@umni_kot Жыл бұрын
Крутой контент, спасибо. И чувствуется бест практис в подаче материала. Класс.
@user-zh8ze4iw2n
@user-zh8ze4iw2n 10 ай бұрын
Спасибо, за видео. Все никак руки не доходили до тестов. Все понятно и по делу.
@pavloOps
@pavloOps 6 ай бұрын
Специально вернулась, чтобы оставить коммент и выразить ОГРОМНУЮ благодарность за видео! Делаю сейчас свой дипломный проект, и ваше видео очень помогло с написанием юнит-тестов для БЕРТ-модели. Спасибо от всей души! Сделала подробный конспект, чтобы всегда был под рукой 🤗🤗🤗🥰🥰🥰
@PythonRussian
@PythonRussian 6 ай бұрын
рад что помог, хотя и не знаю что за берт-модель
@pavloOps
@pavloOps 6 ай бұрын
@@PythonRussian это нейронка, которая в моем случае делает классификацию позитивных и негативных текстовых сообщений. На нее тесты непростые, и ваша схема оформления оказалась для меня просто идеальной ❤️
@user-lechat-lexus
@user-lechat-lexus 2 жыл бұрын
Шикарная подача материала, спасибо! Очень хотелось бы видео про Mock
@PythonRussian
@PythonRussian 2 жыл бұрын
будет, но по срокам не скажу, как со временем станет посвободнее
@user-lechat-lexus
@user-lechat-lexus 2 жыл бұрын
@@PythonRussian ждём 👍
@Brailko_Oleg
@Brailko_Oleg 2 жыл бұрын
Супер, спасибо. Хочется продолжения этой темы
@user-wl2iv9wc6v
@user-wl2iv9wc6v 2 ай бұрын
Если у кого не работает юниттесты по примеру автора (как не работало и у меня), то можно поробовать так: 1. добавляем Unittests -> Custom 2. в окошке Additionfl Arguments добавить: discover -s tests -p '*_test.py' 3. в окошке Working directory выбрать папку в которой лежат и тестируемый модуль и папка с тестами. Т.е. папка, которая на уровень выше, чем модуль и папка с тестами. За урок спасибо, все норм!
@abra-kadabra5000
@abra-kadabra5000 5 ай бұрын
Огромное спасибо! Очень круто и доходчиво все объяснено!
@user-oc4xk6ob5q
@user-oc4xk6ob5q 2 жыл бұрын
Отличное видео! Сразу можно использовать в работе. Спасибо
@PythonRussian
@PythonRussian 2 жыл бұрын
спасибо, по юнитам планирую еще несколько видео снять
@viktorsokolov8153
@viktorsokolov8153 Жыл бұрын
Спасибо за полезное видео. Интересное введение в тестирование. Спасибо за альтернативу if
@user-os8iy9wj2s
@user-os8iy9wj2s 3 жыл бұрын
Очень нужное и полезное видео👏
@PythonRussian
@PythonRussian 3 жыл бұрын
спасибо, буду продолжать
@user-re1ri9jp3e
@user-re1ri9jp3e 2 жыл бұрын
@@PythonRussian нужное дело 🙏
@user-ed1dt9bc1h
@user-ed1dt9bc1h Жыл бұрын
Спасибо огромное! Все по делу все понятно. Вполне воспроимчиво и на скорости 2х
@lukasmog777
@lukasmog777 Жыл бұрын
Спасибо за видео! Написал тестовое на вакансию по твоему видео))
@PythonRussian
@PythonRussian Жыл бұрын
желаю удачи!
@im0767
@im0767 Жыл бұрын
Большое спасибо! Понятно и интересно.
@user-dn8bb3ii9d
@user-dn8bb3ii9d 2 жыл бұрын
Очень круто и понятно +100500👍. Спасибо
@eugene_mountainland
@eugene_mountainland Жыл бұрын
Спасибо огромное! Очень разжевал)
@y18kotov
@y18kotov Жыл бұрын
Чудесно. Спасибо
@foxywrthstupid
@foxywrthstupid Жыл бұрын
Ты просто супер! Всё доходчиво и понятно! Спасибо тебе.
@alexeykolodochkin5826
@alexeykolodochkin5826 2 жыл бұрын
За словарь отдельный респект.
@user-tt3hr1pn9d
@user-tt3hr1pn9d 2 жыл бұрын
Ох, спасибо! Особенно за настройку пайчарма ) кстати, в ТЗ не сказано, что числа должны быть положительными )
@PythonRussian
@PythonRussian 2 жыл бұрын
я спросил у автора тз, то есть у себя - должны быть положительными =)
@cOnT3ST
@cOnT3ST 10 ай бұрын
Наглядно. От начала и до конца
@user-ru2jg4oq1h
@user-ru2jg4oq1h Жыл бұрын
Очень полезное видео
@user-qz6gd6qv4p
@user-qz6gd6qv4p 18 күн бұрын
великолепно!
@Ananacuk777
@Ananacuk777 2 жыл бұрын
Пока учишься главное не забывать привыкать комитить)
@edgull_tlt
@edgull_tlt 2 жыл бұрын
Спасибище!!!
@PythonRussian
@PythonRussian 2 жыл бұрын
да не за что!
@volodymyr8215
@volodymyr8215 Жыл бұрын
доступно. Дякую)
@vladislavshamrin4976
@vladislavshamrin4976 2 жыл бұрын
Спасибо!
@riblodka
@riblodka 2 жыл бұрын
Очень жду видео о Mock
@PythonRussian
@PythonRussian 2 жыл бұрын
будет, но позже, эта тема уже в списке.
@yakovlichevau
@yakovlichevau 2 жыл бұрын
А какие книги по тестированию Вы можете порекомендовать новичку? С каких книг начать? (Видео очень крутое и полезное. Большое спасибо! 👍)
@PythonRussian
@PythonRussian 2 жыл бұрын
для питона могу вспомнить Барйана Оккена и его книгу о питесте. Я же по факту из джавы пришел и все теорию освоил еще там, потому рекомендую те книги и читать, пусть там примеры и на джаве. "Test Patterns Refactoring Test Code" by Gerard Meszaros - это отец терминов фейк, мок, дамми, стаб, рекомендую. "Разработка через тестирование" Кента Бека - это отец нЮнит фреймворков и ТДД. "Refactoring: Improving the Design of Existing Code" by Martin Fowler - Мартин просто красавчик, в этой книге много полезного по рефакторингу, чистому коду и тестам. Можно даже начать с последней. Есть еще "Test-Driven Python Development" от какого-то индуса, но чего то не запомнилось мне, не могу сказать хорошая ли.
@yakovlichevau
@yakovlichevau 2 жыл бұрын
@@PythonRussian спасибо! 🤝
@paulkarkarin466
@paulkarkarin466 2 жыл бұрын
18:00 почему на ноль не попробовал поделить? Страшно стало?)
@yakovlichevau
@yakovlichevau 2 жыл бұрын
А есть ли возможность самому задать порядок выполнения тестовых методов? Как я понял, они выполняются в алфавитном порядке, то есть, например в таком: test_attack test_end_move test_go test_begin_move Но мне для тестирования важен порядок выполнения тестов, то есть например, такой: test_begin_move test_go test_attack test_end_move Не хотелось бы все методы (begin_move, go, attack, end_move) располагать в одном тестирующем методе, поэтому возник вопрос, возможно ли задать порядок, в котором выполняются тестовые методы?
@PythonRussian
@PythonRussian 2 жыл бұрын
обычно это означает что ты что-то делаешь не так, тесты должны быть независимы друг от друга. Если тебе для теста какой то функции нужно, чтобы система была в каком то состоянии (например сделан ход), то конкретно для этого теста можешь сделать сет_ап, подготовку такой ситуации. Но привязывать тесты к друг другу обычно плохая практика. Можно подумать о разюивке на классы, где в 1 классе те, что не требуют подготовки, в другом с подготовкой и т.д.
@jokobaka8669
@jokobaka8669 Жыл бұрын
Блин, я бы никогда не додумался так написать калькулятор (это комплимент).
@exe88cution
@exe88cution 2 жыл бұрын
Очень хотелось бы посмотреть видео про рефакторинг кода. Где бы рассказывалось про запахи кода, хорошего тона и как лучше где что делать) Невероятно востребованная и "хайповая" тема, которая неприменно зайдёт для всех) Надеюсь прислушаетесь.
@PythonRussian
@PythonRussian 2 жыл бұрын
сделаем, но чуть позже
@igorxjarvinen
@igorxjarvinen 8 ай бұрын
17:30 калькулятор работает только с положительными числами, ввод -2-3 выдаст ошибку вместо -5. 26:07 тест деления не проверяет, что в ответе float. self.assertEqual(calculator('10/5'), 2) выдаст ОК, когда должно быть 2.0 решение первой проблемы - переделывать калькулятор, а как решить вторую?
@ri6ik
@ri6ik 2 жыл бұрын
Класс
@Phenosss
@Phenosss 3 жыл бұрын
Привет! Когда ждать selenium+pytest+page object? (:
@PythonRussian
@PythonRussian 3 жыл бұрын
возможно в этом году, я как раз хотел тему парсинга немного затронуть, рассказать про селениум как его правильно настроить и установить. А вот пейдж-обджект немного сложнее в том плане что я пока вообще не затрагивал в видео паттерны и ООП, какой то резкий скачок получится. Но попробовать можно, записал в планы.
@TheRadiant78
@TheRadiant78 2 жыл бұрын
Извините за вопрос новичка..А что происходит с тестами когда программа собирается API?? Их убирают ,или они остаются в общем пакете??
@PythonRussian
@PythonRussian 2 жыл бұрын
не понял что значит программа собирается апи, но тесты остаются всегда в проекте, их заливают в общий репозиторий как раз для того чтобы любой разработчик мог их прогнать. Более того, при сборке продукта или добавлении любого изменения тоже автоматически прогоняются тесты - чтобы убедиться, что все в норме. Тебе дают задачу написать какую то новую фичу -ты пишешь ее, прогоняешь тесты (что ничего не сломал) и еще добавляешь тесты на то, что написал. Все это идет в продукт, код+тесты для него.
@TheRadiant78
@TheRadiant78 2 жыл бұрын
@@PythonRussian спасибо за ответ, именно это я и хотел узнать..Я учусь писать на питоне приложения для смартфонов с помощью KivyMD, они после сборки много весят,плюс тесты, вообщем начинаю думать, что питон пока не лучшее решение для написание приложений)) Огромное вам спасибо, ваши видео очень полезные и лёгкие для восприятия!
@PythonRussian
@PythonRussian 2 жыл бұрын
@@TheRadiant78 я бы посоветовал для мобилок выбрать джаву/котлин, это их территория
@jamjam3337
@jamjam3337 Жыл бұрын
👍👏
@TORT777
@TORT777 Жыл бұрын
кнопка чтобы посмотреть Coverege не активна . как ее активировать ?
@PythonRussian
@PythonRussian Жыл бұрын
кажется в видео говорил (но мог забыть) - активна в полной версии пичарма. Без нее можно установить coverage и через терминал запускать, но уже не так удобно
@AMARO33
@AMARO33 2 жыл бұрын
Сорри за оффтоп. Какая это тема в PyCharm?
@PythonRussian
@PythonRussian 2 жыл бұрын
посмотри в плагинах, Dark purple theme вроде называется, по слову purple легко найти, плагин устанавливаешь и можно тему выбрать. Мне дюже по нраву пришлась
@AMARO33
@AMARO33 2 жыл бұрын
@@PythonRussian спасибо
@alexeykolodochkin5826
@alexeykolodochkin5826 2 жыл бұрын
Просьба: Если можно, продолжить тему тестирования. Заранее спасибо.
@PythonRussian
@PythonRussian 2 жыл бұрын
да, все будет, несколько роликов в планах, просто пока нет времени, сделаю
@user-dp8fz1tk9y
@user-dp8fz1tk9y 5 ай бұрын
Спасибо огромное, очень понятное и полезное видео, но деление на ноль не протестировано - это из самого очевидного
@user-dp8fz1tk9y
@user-dp8fz1tk9y 5 ай бұрын
def calculator(expression): allowed = '/*+-' if not any(sign in expression for sign in allowed): raise ValueError(f'Выражение должно содержать хотя бы один знак({allowed})') for sign in allowed: if sign in expression: try: left, right = expression.split(sign) left, right = int(left), int(right) return { '+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y, '/': lambda x, y: x / y }[sign](left, right) except(ValueError, TypeError): raise ValueError(f'Выражение должно содержать два целых числа и только один знаки вида: ({allowed})') except(ZeroDivisionError): print("Что-то пошло не так...")
@user-dp8fz1tk9y
@user-dp8fz1tk9y 5 ай бұрын
но как проверить эту ошибку в юнит тесте?
@dimabaranov8167
@dimabaranov8167 Жыл бұрын
Можно пожалуйста ссылку на видео про ассерты, если оно осталось
@PythonRussian
@PythonRussian Жыл бұрын
что значит "если осталось"? мы бережем все для вас! kzbin.info/www/bejne/kGS4noZpjtGCes0
@dimabaranov8167
@dimabaranov8167 Жыл бұрын
@@PythonRussian спасибо
@Igor245390
@Igor245390 Жыл бұрын
unittest.mock Objects что такое и зачем нужно?
@PythonRussian
@PythonRussian 11 ай бұрын
в документации есть ответ, видео про мок будет явно не скоро
@andrewpuchinin8547
@andrewpuchinin8547 Жыл бұрын
К великому сожалению кнопка coverage активна лишь в платно Пучаре (ну или я просто не доразобрался в настроках, но мало вероятно). А как было бы круто - запустил - и сразу видишь, где не покрыто...))
@PythonRussian
@PythonRussian Жыл бұрын
coverage это модуль в питоне, если кнопки нет, то его можно просто установить и запустить руками
@mlr__roal_6867
@mlr__roal_6867 Жыл бұрын
Я и без всяких тестов всегда жопой чувствую работает мой код или нет. Правда, пишу только для себя.
@user-bf6hz5sf9s
@user-bf6hz5sf9s Жыл бұрын
глянул в community edition нет coverege грусть
@PythonRussian
@PythonRussian Жыл бұрын
coverage можно установить через пип и использовать в терминале, правда конечно уже не так показательно.
@user-qs3rn3od2v
@user-qs3rn3od2v 2 жыл бұрын
понимаю, что видео не к этому, но очень ждал деление на 0 в тест кейсах
@PythonRussian
@PythonRussian 2 жыл бұрын
тут видишь в чем дело - сам код никак такое поведение не отрабатывал. То есть если мы такой тест добавим то что проверим? Что питон кидает исключение при делении на 0? так это в тестах самого питона проверено. Что наш код такое не обрабатывает?
@user-cy8uj5qk7i
@user-cy8uj5qk7i Жыл бұрын
на 16:43 исключение не сработает. int обработает что-то типа 5.84 и не подавится
@PythonRussian
@PythonRussian Жыл бұрын
люблю я знатоков из ютуба. А ты попробуй-ка в консоли написать int('5.84') ведь у нас там строка.
@user-cy8uj5qk7i
@user-cy8uj5qk7i Жыл бұрын
@@PythonRussian а ну да, я пробовал float передать
@user-oh8oq4oz7d
@user-oh8oq4oz7d 2 жыл бұрын
Eval?)
@tot_samiyenot8732
@tot_samiyenot8732 2 жыл бұрын
Но нужно быть осторожным. Она попробует исполнить все что ей передадут
@freelife1000
@freelife1000 Жыл бұрын
11. 03
@izzzanaaami
@izzzanaaami 2 жыл бұрын
А могли бы вы сделать шрифт еще меньше, чтобы глаза вытекли?
@PythonRussian
@PythonRussian 2 жыл бұрын
а вы могли бы смотреть на нормальном мониторе? не на телефоне
@izzzanaaami
@izzzanaaami 2 жыл бұрын
@@PythonRussian mac 13 inch кровь из глаз
@PythonRussian
@PythonRussian 2 жыл бұрын
@@izzzanaaami у тебя тогда проблема со зрением, у меня тоже макбук эйр 13 дюймов, делаю полный экран и все прекрасно вижу
@azheval
@azheval 2 жыл бұрын
Код очень мелкий. На всех ваших видео. Постоянное всматривание не способствует процессу обучения.
@PythonRussian
@PythonRussian 2 жыл бұрын
ну у меня даже на 13 дюймовов ноуте все нормально видно, не говоря о мониторе компа. Стараюсь и так увеличивать.
@user-gb9ut9pi7y
@user-gb9ut9pi7y 2 жыл бұрын
Почему-то при попытке запустить кейс вот такая ошибка валится, уже второй час не могу разобраться помогите плз: "C:\Program Files (x86)\Python\python.exe" "C:\Program Files\JetBrains\PyCharm Community Edition 2021.2\plugins\python-ce\helpers\pycharm\_jb_pytest_runner.py" --target test_summary_func.py::TestSumm Testing started at 2:00 ... Launching pytest with arguments test_summary_func.py::TestSumm in C:\Users\it2g\PycharmProjects\probe INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\main.py", line 90, in wrap_session INTERNALERROR> config._do_configure() INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\config.py", line 839, in _do_configure INTERNALERROR> self.hook.pytest_configure.call_historic(kwargs=dict(config=self)) INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\vendored_packages\pluggy.py", line 729, in call_historic INTERNALERROR> self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\vendored_packages\pluggy.py", line 338, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\vendored_packages\pluggy.py", line 333, in INTERNALERROR> _MultiCall(methods, kwargs, hook.spec_opts).execute() INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\vendored_packages\pluggy.py", line 596, in execute INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\assertion\__init__.py", line 70, in pytest_configure INTERNALERROR> warn_about_missing_assertion(mode) INTERNALERROR> File "C:\Users\it2g\AppData\Roaming\Python\Python39\site-packages\_pytest\assertion\__init__.py", line 159, in warn_about_missing_assertion INTERNALERROR> assert False INTERNALERROR> AssertionError Process finished with exit code 3 Empty suite Empty suite Что можно сделать?
@PythonRussian
@PythonRussian 2 жыл бұрын
У тебя точно питест должен быть? В ошибке видно, что тестов нет(empty suit), проверь что они есть и называются в стиле test_something
@DagvelloUkr
@DagvelloUkr Жыл бұрын
Для ленивых def calculator(expression): """Функция калькулятор""" allowed = '+-*/' if not any(sign in expression for sign in allowed): raise ValueError(f'Выражение должно содержать хотя бы один знак ({allowed})') for sign in allowed: if sign in expression: try: left, right = expression.split(sign) left, right = int(left), int(right) return { '+': lambda a, b: a + b, '-': lambda a, b: a - b, '*': lambda a, b: a * b, '/': lambda a, b: a / b, }[sign](left, right) except (ValueError, TypeError): raise ValueError('Выражение должно содержать 2 целых числа и один знак') if __name__ == '__main__': print(calculator('10/5')) ------------------------------------------------------------------- from unittest import TestCase, main from calculator import calculator class CalculatorTest(TestCase): """Тесты для функции calculator""" def test_plus(self): """Тест функции плюс""" self.assertEqual(calculator('2+2'), 4) def test_minus(self): """Тест функции минус""" self.assertEqual(calculator('5-3'), 2) def test_multi(self): """Тест функции умножения""" self.assertEqual(calculator('5*3'), 15) def test_divide(self): """Тест функции деления""" self.assertEqual(calculator('10/5'), 2.0) if __name__ == '__main__': main()
Лямбды. Не такие и страшные
36:37
Python Russian
Рет қаралды 9 М.
IS THIS REAL FOOD OR NOT?🤔 PIKACHU AND SONIC CONFUSE THE CAT! 😺🍫
00:41
ВЫКИНУЛА МОЙ АЙФОН?? #shorts
00:33
Паша Осадчий
Рет қаралды 1,8 МЛН
Python Tutorial: Unit Testing Your Code with the unittest Module
39:13
Corey Schafer
Рет қаралды 1,3 МЛН
Основы Asyncio
53:25
Python Russian
Рет қаралды 11 М.
Главная тайна IT, язык Smalltalk
18:50
Python Russian
Рет қаралды 3,3 М.
Python Mock, MagicMock: мокаем веб-сервисы, базы данных
1:18:05
Надежное программирование
Рет қаралды 7 М.
Python Unit Tests: Введение в Тестирование
13:49
Аве Кодер
Рет қаралды 5 М.
Основное оружие питониста: Listcomps и Genexp
52:55
IS THIS REAL FOOD OR NOT?🤔 PIKACHU AND SONIC CONFUSE THE CAT! 😺🍫
00:41