Дружище, спасибо большое, всё четко и по делу, ещё и 5 минут.
@louispython82153 жыл бұрын
Боже, ну почему у таких прекрасных видео так мало лайков.. А всякие "Хауди-Хо" набирают по миллиону подписчиков и по 100к лайков...
@SweetCoder3 жыл бұрын
ну тут я никаких противоречий не вижу: во-первых мой канал еще очень молодой. особенно при непосредственном сравнении. во-вторых: Хауди-Хо действительно прикольный канал, там много интересных, весёлых и необычных видео. я и сам его периодически смотрю. так что, всё закономерно ))
@tetrafen3 жыл бұрын
@@SweetCoder еще бы тебе веб камеру сменить, чтобы качество картинки радовало глаз)
@SweetCoder3 жыл бұрын
@@tetrafen выполнено.
@flyintie2 жыл бұрын
хауди работает на массу
@AlternativeMessage-cs6ux5 ай бұрын
@@flyintie типа, железо тягает?
@КонстантинСедельников-л3ю3 жыл бұрын
Просто волшебно рассказал. Просто отлично!!
@SweetCoder3 жыл бұрын
спасибо за отзыв ))
@blackcat_773 жыл бұрын
Спасибо, все очень четко и лаконично.! Почему так мало лайков.
@SweetCoder3 жыл бұрын
спасибо за отзыв
@Rudoku_3 жыл бұрын
Спасибо за ваш труд
@SweetCoder3 жыл бұрын
на здоровье
@RuchejAlex3 жыл бұрын
Что? Я на канале "Нежный кодер"? Сразу вспомнил момент из "Полицейской академии", когда двое попали в бар "Голубая устрица".
@denissavast7 ай бұрын
Благодарю за отличный материал, поехал на пикник !
@AleksandrGrebelnyi2 жыл бұрын
спасибо. люблю твои видосы, и лёгкий, но острый юмор👍
@xm4dn355x3 жыл бұрын
Бро, было бы круто ещё про тестирование БД, Моки и тесты для внешних API ))) А то там уже шкала сложности усвоения документации по unittest мгновенно взлетает по экспоненте)))
@SweetCoder3 жыл бұрын
для того чтобы тестировать API нужно сначала научиться писать API. рано или поздно дойдём
@tema_skakun3 жыл бұрын
спасибо тебе человек за этот великолепный ролик. подписался)
@SweetCoder3 жыл бұрын
на здоровье
@RayUa3 жыл бұрын
Ааааа, Кива с Бужанским прям на своих тупых местах!😆 Спасибо!👍👍👍👍
@SweetCoder3 жыл бұрын
🙂😉
@_pointZero_3 жыл бұрын
Спасибо, очень познавательно!
@SweetCoder3 жыл бұрын
на здоровье
@leosv02 жыл бұрын
Отличное познавательное видео!
@SweetCoder2 жыл бұрын
спасибо за отзыв
@fionover98163 жыл бұрын
Спасибо за видео :)
@SweetCoder3 жыл бұрын
на здоровье
@PythonDevelopment2 жыл бұрын
Спасибо большое. Хотелось бы больше материала по тестам, особенно как писать тесты на приложения из жизни
@asm64 Жыл бұрын
Чётко объяснил )
@Daibend3 жыл бұрын
Ящик пива этому гению!!!
@SweetCoder3 жыл бұрын
тому кто придумал unit-тесты? многие его ненавидят ))
@art610174 жыл бұрын
Спасибо!
@SweetCoder4 жыл бұрын
на здоровье
@OleksandrMatviienko3 жыл бұрын
спасибо
@SweetCoder3 жыл бұрын
на здоровье
@bullcode84063 жыл бұрын
Привет! Изучаю Python и соответственно пишу очень много всего разного, от а+а до генераторов с функциями и прочего (пока на стадии генераторов и функций). При тесте задачи постоянно приходится ее перезапускать и вводить разные данные, int, float, str, коллекции и тд. Правильно ли я понял из видео что моих ручных проверок в каждой второй задаче можно избежать написав юниттест? И наверное можно на такой случай написать универсальный тест и просто импортировать его в свои задачи? Спасибо за видео на канале! Я, конечно же подписан, лайкаю и нажал на колокольчик:)
@SweetCoder3 жыл бұрын
ты всё правильно понял. после каждого минорного изменения заново ручками проверять как ведёт себя программа при вводе строки, числа, даты и т.д. и т.п. очень долго и дорого. оптимальнее создать скрипт теста, и просто запускать его каждый раз когда внёс изменения.
@bullcode84063 жыл бұрын
@@SweetCoder круто. Спасибо большое!
@GladSpiR2 жыл бұрын
А где про тесты можно посмотреть подробнее? Просто по мне использовать валидатор входных значений и обработчик исключения куда более правильное решение, но думаю тут не про это.
@Majkirsche4 жыл бұрын
класс, спасибо
@SweetCoder4 жыл бұрын
на здоровье
@engineer1033 ай бұрын
коммент ради продвижения канала
@РостиславКолодій-н8ч Жыл бұрын
Как фреймворк видит методи, которие начинаются на test_?
@funk62484 жыл бұрын
классно, не знал об этом
@SweetCoder4 жыл бұрын
о чем именно?
@funk62484 жыл бұрын
@@SweetCoder о юнит тесте
@SweetCoder4 жыл бұрын
до этой темы во время обучения доходят не все. а вообще это нормально. знать всё - невозможно.
@NoName-hi8bv Жыл бұрын
genius, ты показал максимально обсосанный пример, то как работает программа должно быть определенно на этапе проектирования приложения, на этапе получения данных от пользователя должна быть проработана предварительная валидация данных. Если приводить примеры тестирования, то можно выделить пару примеров, например тестировать поведение функции, при вводе условно верных данных, например вы пишете фикцию для каких то вычислений, она безумно сложная и занимает 20 строк кода, и выполняется секунд пять, вы её тестируете сопоставляя с заведомо верными данными, но программист B, решает что данная функция является узким местом программы из за частого его вызова программа тратит много времени на вычисления. После внесения корректировок программистом B программа начала работать и правда быстрее, но благодаря тестам может всплыть что она выполняет задачу с ошибкой, например при вводе отрицательных чисел или float или 0. Так что во многом тесты помогают разработчикам быть уверенным что их код работает так как ожидается. Но есть второе применение которое так же очень важное, например для поддержки приложения, мой пример, я написал парсер для загрузки аудиокниг, и через 2 месяца решил скачать себе новую книгу, по итогу загрузчик ложился с ошибкой в о время загрузки, по логам проблема была в модуле async_downloader и если бы не тесты я бы искал проблему там, но благодаря что я заранее на каждый класс написал тесты стало ясно что структура html немного поменялась, и вместо ссылок на аудиофайлы я получал ссылки на картинки. Которые успешно передавались в модуль загрузчик. Так что тесты нужны так же для поиска ошибок в программе после изменений внешних факторов.
@PROswimming3 жыл бұрын
Уважаемый блогер, здравствуйте. Объясните пожалуйста, как понять от какого класса мы должны наследовать класс, который мы сейчас задаем? Это в какой-то документации прописано или мы придумывать должны? У вас в данном случае наследуется от класса unitest.Testcase. Не понимаю, откуда вы взяли Testcase? Это модуль в классе unitest? спасибо
@SweetCoder3 жыл бұрын
в данном случае нужно знать или посмотреть в документации. в общем случае наследоваться нужно от того класса, функционал которого нужен тебе в твоём наследнике
@PROswimming3 жыл бұрын
@@SweetCoder принял, благодарю
@KovalchykIgor3 жыл бұрын
Лайк за шутки!)
@SweetCoder3 жыл бұрын
да? ну ок )) спасибо
@sgatrade87192 жыл бұрын
ну, теперь можно идти гробить печень)
@SweetCoder2 жыл бұрын
да, только осторожно
@ИванИванов-н9т9ъ4 жыл бұрын
Красаучег!
@SweetCoder4 жыл бұрын
спасибо за отзыв
@celticrain253 жыл бұрын
Это прям как "сам себе QA"
@SweetCoder3 жыл бұрын
на самом деле это не отменяет необходимость в специалистах QA, просто немного экономит время разработки
@kotonotekstudio23884 жыл бұрын
Помню точно такой же видос на английском канале смотрел ;)
@SweetCoder4 жыл бұрын
а в том видосе такой же симпатяга был? ну, а если серьезно: пример уж очень хороший. наглядный. поэтому и довольно распространенный
@grozoff3 жыл бұрын
1:37 лайк!
@Dandi_jr3 жыл бұрын
кива не глупый. кива уже кандидат наук!))
@SweetCoder3 жыл бұрын
да, "глупый" какое-то неподходящее слово. слишком мягкое
@amerigovespucci14993 жыл бұрын
У меня при вводе python -m unittest "название файла".ру, выдает ошибку. Говорит, файл не найдет. Что можно с этим сделать?
@SweetCoder3 жыл бұрын
скорее всего дело в названии файла. либо ты запускаешь его не из той папки в которой он находится
@amerigovespucci14993 жыл бұрын
@@SweetCoder Спасибо, разобрался 👌. Путь надо было доуказать
@drongerman5363 жыл бұрын
Вопрос, а как ты запускаешь код из консоли атома, или это сторонний плагин? Отпиши если не сложно)
@SweetCoder3 жыл бұрын
не сложно. на канале есть видео с обзором подборки плагинов, которые я постоянно использую. плагин называется platformio-ide-terminal и он полностью копирует функционал родной консоли операционной системы. это не единственный вариант, есть и другие. но мне понравился именно этот из-за возможности настройки цветовых схем
@9_killa2 жыл бұрын
У меня почему то Ran 0 test in 0.000s. То с чем св'язано?
@LOGOSTT2 жыл бұрын
1:35 Бузова и ещё некоторые могут обидеться ;-)
@SweetCoder2 жыл бұрын
не могу сказать, что меня это сильно волнует ))
@СветиславДобромиров2 жыл бұрын
Доброго. Почему-то тесты по программе из примера: self.assertRaises(TypeError, circle_area, 'df') self.assertRaises(TypeError, circle_area, [12,12]) self.assertRaises(TypeError, circle_area, {"1":"123"}) не выдают ошибку. Однако вот этот тест выдал ошибку. self.assertRaises(TypeError, circle_area, True) Запуск делал до покрытия тестами основного кода.
@pavelizyumov8389 Жыл бұрын
не знаю поможет ли тебе это спустя год) в общем не все объекты можно сравнивать с нулем. собственно например массив с int сравнить нельзя и эта операция итак выдаст ошибку TypeError. Поэтому тест выполняется. А вот True - булево значение, его можно сравнить с int (он преобразуется в единицу)
@АртурАлиев-й4н3 жыл бұрын
Используйте isinstance() вместо type() %) Урок полезный, спасибо)
@SweetCoder3 жыл бұрын
ты абсолютно прав. дурацкая привычка. спасибо за отзыв
@БендерЗадунайский-щ9ы4 жыл бұрын
подписался👍
@SweetCoder4 жыл бұрын
🤝👍
@noone-hi6kq3 жыл бұрын
сЭрвис блеят)))))))
@SweetCoder3 жыл бұрын
тут схематично приведена лишь часть сервиса, чтобы проиллюстрировать идею тестирования
@liho263 жыл бұрын
а в чем разница между unittest и pytest, например?
@SweetCoder3 жыл бұрын
а что по этому поводу говорит гугл?
@liho263 жыл бұрын
@@SweetCoder Много бестолкового. Хотелось бы получить выжимку и краткое объяснение. желательно в видео.
@SweetCoder3 жыл бұрын
@@liho26 возможно когда-то дойдут руки и до сравнения тестировочных модулей
@liho263 жыл бұрын
@@SweetCoder Договорились. Когда руки дойдут, тогда на одного подписчика станет больше на этом канале.
@rockkley91592 жыл бұрын
Ну можно было что-нибудь другое протестить, а не просто у Сократики слизывать почти строчка в строчку
@mRelby133 жыл бұрын
Это можно назвать проще: проверка на дурака)) Правда, не совсем понял, зачем юзать доп. модуль, создавать файл и тд... когда всё тоже самое можно проверить в написанной программе, используя для этого if-ы.
@SweetCoder3 жыл бұрын
нельзя. добавляя if-ы в программу ты меняешь её код. проверишь с if-ами, предположим, что все хорошо. но как только ты их удалишь - это будет уже другой - не тестированный код. также, обычно для тестов готовят несколько сотен или тысяч тестовых данных. писать для каждого случая if-ы - дурное дело
@stanislav11253 жыл бұрын
🤦
@ЮрийАндреевич-т8д3 жыл бұрын
Проверка типов довольно спорная тема в питоне. Как по мне, если вы это предпочитаете, то лучше использовать какой-либо статически типизированый язык. Кроме того может сложиться впечатление, что юниттесты - это про проверку типов, хотя они скорее для тестирования логики самой функции/метода.
@SweetCoder3 жыл бұрын
а почему проверка типов это спорная тема? я может быть действительно чего-то не знаю. юнит-тесты, конечно же, не про проверку типов, однако даже в этом плохеньком примерчике явно видно, что использование строки или отрицательного числа вместо предполагаемого положительного числа, серьёзно влияет на успешность выполнения логики самой функции/метода. тип данных проверяется не в тесте, а в самой программе, а тест как раз подтверждает устойчивость программы к разным входным параметрам.
@ЮрийАндреевич-т8д3 жыл бұрын
@@SweetCoder потому и "спорно", что это не аксиома : ) Python язык динамически типизированный, направленный на улучшение читаемости кода. Конструкции проверки типов в начале функции удлиняют код и снижают его читаемость, хотя бы фактом своего присутствия, что протеворечит смыслу языка. Не логичнее ли тогда просто писать на статически типизированном языке, где это по умолчанию включено? Чтобы некорректный аргумент не передавать в функцию сейчас присутствуют аннотации типов, но даже они не бросают исключения при несоответствии типов, а служат лишь комментарием для разработчика. Вообще, пользователь же не будет напрямую вызывать функции вашего кода, а делать это через gui или api. Вот на этом уровне и должны отсекаться все подобные неожиданности, и просто не должно быть по умолчанию такой ситуации, что в функцию передан некорректный аргумент. Но кстати, если вы хотите таки использовать проверки типов, могу предложить конструкцию "assert isinstance(radius, float)". Согласитесь, так короче и понятнее конструкций типа "if... raise..."?)
@SweetCoder3 жыл бұрын
вот тут я вообще не могу ни с чем согласиться. Тот факт что Python направлен на улучшение читаемости кода совершенно не означает, что в Python не нужно отлавливать исключения и предупреждать нештатные случаи выполнения программы. Если бы это противоречило духу языка не были бы реализованы try ... except и прочие TypeError. "Не логичнее ли писать на статически типизированном языке?" - нет, не логичнее отсекать все неожиданности на уровне GUI не всегда представляется возможным. А на уровне API всё равно придётся проводить проверку соответствия типов. или там тоже нужно пожертвовать проверкой ради легкочитаемости реализации API ? "не должно быть по-умолчанию такой ситуации, что в функцию передан некорректный аргумент" - такое бывает только в стране эльфов и единорогов. у них как-то получается. у нас, простых смертных - нет. assert isinstance(radius, float) - не является приемлемой практикой даже в этом отдельно взятом примерчике. данные могут быть некорректными по двум осям (либо не числовой тип, либо числовой, но число отрицательное или комплексное) для логирования гораздо удобнее иметь информацию о том, произошла TypeError или ValueError, вместо того, чтобы лог был забит исключительно AssertionError
@ЮрийАндреевич-т8д3 жыл бұрын
@@SweetCoder "assert isinstance(radius, float) assert radius > 0" В чем проблема то? Конечно ошибки отлавливать нужно, но это не тот случай. Ведь ошибка и без дополнительной проверки выбрасывается в этом примере, и в чем смысл лишней логики тогда. P.S. к assert можно добавить комментарий вторым аргументом. А api или gui это пример. Короче, где угодно кроме самой функции это лучше обрабатывать.
@SweetCoder3 жыл бұрын
@@ЮрийАндреевич-т8д я ж написал в чём проблема. AssertionError не даёт классификации того, что именно пошло не так. разные исключения (TypeError, ValueError, etc.) могут обрабатывать по-разному. именно поэтому assert не является Best Practice. Идентифицировать исключения по кастомным "сообщениям" - это, я извиняюсь, детский сад. что дальше? для описания индивидуальной обработки разных исключений будем использовать switch ?
@ViacheslavHudzovskyi Жыл бұрын
up
@testingcoder3 жыл бұрын
Популяризация написания юнит тестов - дело хорошее и нужное. Но (ИМО), без TDD теряется до 70% профита от юнит тестов.
@SweetCoder3 жыл бұрын
по поводу процентов ничего не могу сказать. я не тестировщик. но мне трудно себе представить как можно реализовать TDD без unit-тестирования. чтобы перейти к масштабной методологии TDD сперва необходимо ознакомиться с её составными частями. поэтому мне кажется абсолютно логичным сначала познакомиться с unit-тестами, а потом уже со всем остальным
@testingcoder3 жыл бұрын
@@SweetCoder я думаю нам есть смысл сделать совместное видео на тему. TDD - это это один из спобов делать Unit тестирование :) И кстати, это как раз не про тестирование (поэтому и называется test-driven DEVELOPMENT) Вот тут кстати неплохой пример TDD kzbin.info/www/bejne/hIi9eZaghq9petU
@Gigantovod3 жыл бұрын
Похоже тема поживее пошла, тут уже комменты подгребают... Даёшь 100 000 лайков и 100 500 комментов!
@SweetCoder3 жыл бұрын
всё будет. вот так по зёрнышку...
@МихаилКорнюшенко-ж3ы2 жыл бұрын
АХАХАХАХ ЗА дегтярева в списке глупых отдельный плюс!))
@dackbird24313 жыл бұрын
как на пайтон тестить допустим c# код??
@SweetCoder3 жыл бұрын
такое возможно только используя специальные интерфейсы, например браузер или API
благодарю за ссылку, оч. круто снято, но только вот не все по английски рубят) а пока инглишь подтягиваю, - буду на этом канале, имхо- очень хорошая подача материала, спасибо!
@waydaysay Жыл бұрын
Я не совсем понял хотя посмотрел его несколько раз
@izzzanaaami2 жыл бұрын
как программисты могут пить алкоголь. мне кажется, это негативно влияет не только на печени, но и на мозге
@kuaranir2440 Жыл бұрын
А смысл писать Юнит-тесты, если тебе все равно придётся прописывать в своем коде те же условия, из-за которых провален Юнит-тест? А откуда ты вообще берешь критерии для Юнит теста?? То есть суть Юнит теста такова: Я конструирую супер-прочный телефон. Делаю сначала говно, иду тестить его путем бросания на асфальт. Он естественно разбивается. И я такой: "ага, надо сделать ударопрочный корпус". А почему бы мне тогда сразу не делать ударопрочный корпус, лол
@ИвфИвф6 ай бұрын
Действительно, условия и логика должны быть прописаны в ТЗ. В данном случае, почему результат не может быть нулевым или отрицательным? Из приведенного автором видео примера польза юнит-тестирования нулевая и смысл этих тестов не понятен.
@kuaranir24406 ай бұрын
@@ИвфИвф и я о том же
@sg66303 жыл бұрын
йад
@SweetCoder3 жыл бұрын
не понятно
@sg66303 жыл бұрын
@@SweetCoder все понятно. Хорошо рассказываешь.
@SweetCoder3 жыл бұрын
@@sg6630 ок. спасибо за отзыв.
@sg66303 жыл бұрын
@@SweetCoder спасибо за видосы! Я учусь кодить и твой материал помогает! Удачи тебе!
@SweetCoder3 жыл бұрын
@@sg6630 приятно слышать. желаю успехов!
@masterprotocol2 жыл бұрын
ты настолько много куришь что даже через видео запах идёт голимый