Ошибка: django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES (выводит целое полотно из ошибок, в конце данная ошибка) Решение: import django import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "books.settings") django.setup() В файл где лежат тесты. За место "books" пишите название папки, где лежат settings Всем привет, доброго дня!
Если вы используете django = "^5.1.2" и в тесте используете django.test - установите psycopg2 локально к python-у, который используется в системе. Почему-то эта библиотека не видит psycopg2 в виртуальном окружении...
Супер. Очень полезное видео! Классно, что это было показано на реальных примерах, а то много где обычно просто тестируется базовые математические операции и на этом все.Спасибо!
Спасибо Вам! Отличное изложение материала. Действительно, для тех кто хочет двигаться своим трудом, а не ,,питон за полчаса три млн просмотров,,. Спасибо.
Ну моё почтение за такие уроки) Не перестану это писать, очень интересно, познавательно и не скучно! Спасибо тебе большое, надеемся не остановишься на этом)
@@SeniorPomidorDeveloper ну тогда с нетерпением ждем!) Лично от себя, очень интересная такая тематика, как ревью кода, людям это заходит, ибо это невероятно познавательно и бесценно)
Сеньор, у тебя топовая подача материала! Спасибо тебе большое)) Возвращайся, очень ждем продолжения по джанго(как пример можно было бы раскрыть темы переопределения разных методов при сериализации, кастомизация фильтров, сигналы, миддлваре)
Очень доходчиво и подробно все рассказано и показано на практике. Лично для меня очень актуально, я как раз начал разбираться с тестированием на своём проекте) Спасибо огромное за ваш труд!!!
Как раз хотел изучить тестирование в Джанго и Celery. А на этом канале есть и то, и другое. Да-да, 2 года прогал без тестирования, закидайте меня гнилыми ПОМИДОРАМИ. P.S. Комментарий больше для продвижения канала. Спасибо огромное за знания. Всё очень доступно и круто!
BookSerializerTestCase наследуемый от TestCase , создает запись в основной бд и не удаляет её после завершения теста. Если наследоваться от APITestCase, то тогда все ок работает
Нужно ли хранить html вывод от coverage в репозитории или добавлять в gitignore? С одной стороны, команда будет понимать насколько хорошо код покрыт тестами, с другой стороны репозитория засоряется лишними файлами
как всегда - всё супер! как ты зарабатываешь? фрилансер ? или официально в какой компании? как много времени заняло у тебя дойти до такого уровня, интересно с такими скилами насколько хорошо можно зарабатывать из дома? п.с. работаю в госкомпании (инженер - программист в асутп), огромное желание уйти в разработку из дома =)
Я думаю что со скилами из всех этих курсах , вполне можно найти работу как минимум Джуниор , а если ещё немного будет опыта то и до middle. Я работаю старшим программистом , в одной небольшой международной компании . Я достаточно быстро достиг среднего уровня, во многом из-за того что был опыт сис админа . С базовым знанием питона , по идее за пол года можно так прокачать веб , чтобы найти нормальную работу
При создании теста для сериализатора импортировал TestCase не из dgango.test , а из unittest. Получился неожиданный результат) При каждом создании книг для теста, они сохраняются в БД. Т.е., как я понял не создается временная БД для теста, а тупо записывается в общую. Вернее, я уверен, что не создается, т.к. во время запуска теста, используя TestCase из django, там четко написано, что: Creating test database for alias 'default'... .......... Destroying test database for alias 'default'...
На примере этого урока видно полезности "Полой" версии Пайчарма, я такой "Так, почему него вылезло это окно..так и инит автоматом...а это что ? блин, тут ручками писать придется". Возможно, конечно, я просто что-то не настроил, но вроде больше похоже на "А он прав, стоит купить в дальнейшем"
Да, пайчарм про - это топовая IDE. Они мне за рекламу не платят , к сожалению) но очень рекомендую. Работа с дебаггером через тесты это очень полезный инструмент. Нигде такого не видел больше.
Кстати, господа, вы можете получить бесплатную лицензию, если студент или на курсах от Stepik (они бесплатные) по тому же python и работать с удобными фичами )
Ну если в тесте тот же, то никак. Просто обычно тесты отдельно пишут для сериализатора , а в тестах вью его просто используют. Как именно я в видео сделал, честно говоря, уже не помню
Спасибо за курс! Очень мало таких продвинутых курсов! Хотелось бы еще уточнить по тестированию API - у меня не совсем получается по твоему шаблону, т.к. у меня в модели включен 'ordering' - да и скорее всего у всех так. Но сериалайзер возвращает несортированные данные (возвращает в порядке как получает..). А response наш возвращает уже сортированные данные. Как это обойти? Посоветуй плиз.
@@SeniorPomidorDeveloper честно-говоря, думал целый день, и только утром додумался - просто добавляем вставляемые обьекты сначала в queryset = .objects.all(), а потом передаем его в сериалайзер! ура)
А не работает: "django.urls.exceptions.NoReverseMatch: Reverse for 'book-list' not found. 'book-list' is not a valid view function or pattern name ". Возможно в Django 4, что-то поменялось. В лоб решения не нашел.
На 21:55 почему у нас нет книг если они у нас как бы есть в базе? Это типа для тестов создается временная бд и в рамках этого класса там как бы отсутствуют данные пока мы их не пропишем, и там всегда будут только те данные которые мы сами пропишем именно в КЛАССЕ?
Это не библиотека . Просто пишу “Alt + Enter” и он делает импорт , а если вариантов с таким именем несколько то он спросит какой конкретно мне нужен. Это все PyCharm
Эти команды только в ОС работают , для этого не нужно коннектится к БД. Если их нет , то надо другими способами юзера создать. Можете зайти в группу телеграмм , может там кто-то подскажет подробнее . Ссылка в профиле
Ваше видео по тестам очень помогает! Но объясните, пожалуйста, Вы пишете команду psql --username=superadmin books_db чтобы привязать нового суперпользователя к базе, а затем старому владельцу базы book_user даете права создавать базы. Получается, теперь главный пользователь superadmin, а book_user только создает базы для тестов? Можно ли было наоборот суперадмину дать только права на создание баз? При этом, book_user все еще является пользователем в настройках проекта
Честно говоря, я уже не помню почему конкретно так. Я думаю что все действия с базой проекта должен делать специальный юзер этой базы , типа book_user . А нафига этот superadmin нужен я уже не помню. В любом случае авторизовывать приложение под админом базы это не верно. В СУБД типа Postgres может быть много баз данных . Каждая связана с каким-то отдельным проектом и у каждой свой пользователь, которого мы пропишем в настройках проекта . Мы не можем админа прописать в настройках проекта - это типа не безопасно .
На сколько я понял, через pgAdmin, у каждой бд должен быть владелец, им как раз и является book_user, в нашем случае. А superuser может раздавать права всем юзерам и заглядывать во все бд, на правах главного. Я лишь могу предположить, что под каждый проект создавать отдельного юзера под бд проекта - это лишь рекомендация, для удобства и безопасности. Но пока что я пользуюсь PgSQL пару дней и создал первый проект с ней, так что не могу уверенно заявить удобно это или нет.
Такая проблема, в какой-то момент в терминале, когда ввожу команду "manage.py test...", он не выводит ничего, ни ошибки, ничего вообще, просто переключается на следующую строку для ввода. Почему так? Только что все работало
Вероятно что сама команда написана с ошибкой . Как вариант попробовать альтернативный терминал windows, или можно сделать скриншот и спросить в чате , ссылка в профиле
Имхо, такие тесты API эндпоинтов хороши только при простом функционале. Если бизнес логика сложная, или потенциально будет усложняться, то такие тесты будут уже скорее интеграционными, а не юнит. Даже в рамках API стоит писать такие тесты, как в примере с мат. операциями. Ну и pytest нынче на голову выше джанговских тест кейсов, один только parametrize слишком мощная штука
Бизнес логику вполне неплохо тоже тестировать как юниты. Хотя чаще мы тестируем конечно связку функций, чем каждую по отдельности. Можно писать в связке с api эндпойнтом , можно его отдельно и логику отдельно. Можно логику разбирать на части или тестировать целиком . По моему опыту это не важно. Главное чтобы тесты в принципе были и чтобы покрывали и проверяли что нужно. Как широко каждый из тестов писать решает сам разработчик, и мы даже не особо стараемся это контролировать. У нас в проекте сейчас 15.000 юнит тестов, и они постоянно растут, за всему не уследишь и это не нужно.
@@SeniorPomidorDeveloper В целом согласен, необходимость тестировать изолированно отдельные компоненты не для каждого проекта, это все ситуативно. Я, по возможности, предпочитаю изолированно тестировать функционал, т.к. проще тестировать граничные кейсы и классы эквивалентности, которые могут потеряться при тестировании какого-то флоу целиком.
Это нормально для Windows, надо загуглить как создать юзера через консоль sql. Вроде обсуждали это в группе в телеграмме, поищите там . Ссылка в профиле
@@SeniorPomidorDeveloper спасибо , зайду в телегу посмотрю а то что-то с установкой постгре вчера 2 часа пытался все сделать и вроде сделал но пока что ничего не появляется в базе , хотя миграции делаются и настройки все на постгре стоят ,и да , это я на маке вызываю эту команду но что-то у меня мак капризный
Спасибо очень интересный курс. Не могу понять, откуда берется book-list в reverse? Т.е. как django знает, что это именно book? Нигде же явно не определено это. 18:16
Когда мы создавали роут для нашего вьюсета, он автоматически генерирует как урл, так и имя для него. Если хочешь наглядности, то пропиши print(router.url) для каждого зарегистрированного тобой роута.
У меня почему-то не видит те библиотеки для импорта, что у Вас. Например, не показало импорт APITestCase из джангореста, хотя я его установил. Как это исправить?
@@SeniorPomidorDeveloper Спасибо, что отвечаете. Теперь выяснилось, что при запуске тестов у меня создалось 10 тестовых книг с разными id, хотя их не должно быть. Вроде бы за вами все повторил. Понимаю, что это гадание на кофейной гуще, но может вы знаете, почему так? (на 3 уроке увидел)
Делал всё как в видео, но получил ошибку 2022-12-05T12:26:06.786361282Z RuntimeError: Model class short_link_controller.models.ShortLinkService doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. Пробовал импортировать прописывать в settings... Ниичего не помогает. 2 дня пытаюсь решить вопрос. Как импортировать то правильно?
тест лучше писать в таком формате def test_func(a, b, c): if c == "+": return f"{a} {c} {b}" if c == "-": return f"{a} {c} {b}" if c == "*": return f"{a} {c} {b}" print(test_func(2, 5, "-")) тогда не забудете знаков
@@SeniorPomidorDeveloper к сожалению - нет( так и не нашел способ решить эту проблему. решил пока делать без тестов. я и дб удалял, и принудительно сессии все завершал, после запуска теста создается новая бд и какая-нибудь ошибка будет про то, что есть уже другие сессии к ней. даже не знаю в чем дело..
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. что это значит?
Исправил, добавил в каталог с тестами - __init__.py и в него: import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'books.settings') import django django.setup()
@@montecristo31 Спасибо, у меня та же ошибка вылазила, решение не мог найти. Но что примечательно, если импортировать TestCase из unittest, а не из django.test, то все отлично работает.
Приветствую автора этого канала. У меня возникла ошибка raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. Вы могли бы помочь.
Советую мой последний курс - Оптимизация Джанго. Хороший такой курс получился, не могу не посоветовать 😁 Если серьезно, я не особо интересуюсь курсами. Спроси в группе в телеграмме, ссылка в профиле , может там что подскажут .
@@SeniorPomidorDeveloper А есть ли какие либо мессенджеры или группы? Для связи и возможно вопросов касаемо python и Django? В Ютубе не особо удобно, как по мне :)
Согласен, но канал у меня пока не большой . Если будет подписчиков побольше то сделаем стрим с вопросами , может когда-нибудь и до группы дойдём , но не ближайшее время .
Коллеги, у кого такая борода: ImportError: 'tests' module incorrectly imported from '..\project\app\tests'. Expected '..\project\app'. Is this module globally installed? Если, как в видео создали одноименный пакет, то удаляйте файл tests.py из папки приложения...)))
Здравствуйте, не подскажете с чем связанно данное исключение: TypeError: argument of type 'ConnectionHandler' is not iterable. Появилось при самом первом тесте.
всё, до меня дошло. всем кто читает это и такой же растяпа как я, знайте - если у вас такая проблема, возможно вы имея бесплатную версию pycharm, пытаетесь использовать графический интерфейс тестирования :D. в консоли всё работает как нужно.
createuser -s -P superadmin Enter password for new role: Enter it again: createuser: error: could not connect to database postgres: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? что делать с этой ошибкой? И к какой базе ты подключился?
Похоже что postgres или не установлен или не запущен или находится на каком-то необычном порту.. Можно вот это попробовать stackoverflow.com/questions/42653690/psql-could-not-connect-to-server-no-such-file-or-directory-5432-error
@@SeniorPomidorDeveloper после этого у людей может быть FATAL ERROR, второй комментарий этой ссылки поможет stackoverflow.com/questions/16973018/createuser-could-not-connect-to-database-postgres-fatal-role-tom-does-not-e
Reverse for all-list (all - это у меня вместо book) not found. 'all-list' is not a valid view function or pattern name. Вот такое вылетает, есть ли какие-либо предположения, что это может быть?
Здравствуйте, подскажите, пожалуйста, у меня при запуске теста возникают проблемы при импортировании класса TestCase с пакета django.test. (возбуждается такая ошибка - TypeError: argument of type 'ConnectionHandler' is not iterable). А когда импортирую с пакета unittest все тесты проходят. Сидел вчера всю ночь, но так чет и понял в чем дело.
@@SeniorPomidorDeveloper при чем знаете, поменял первую строчку на "from django.test import testcases" и на "class LogicTestCase(testcases.TestCase):". После этого запустил через терминал manage.py test store.tests.test_logic и.. вуаля, тест пройден. Видимо, я где то накосячил )
@@SeniorPomidorDeveloper а еще вылезла ошибка TypeError: argument of type 'ConnectionHandler' is not iterable. Она возникает в случае, если я запускаю файл test_logic.py в PyCharm через контекстное меню командой Run.
Лучше сразу говорить о "подводных камнях", а не оставлять их сюрпризом на потом. Дело в том, что, как, возможно, и многие, смотрю и сразу пытаюсь выполнять. Так над тем, почему не запускаются тесты в CE через правый клик провозился приличное время (и даже настроил, задав определенные опции в настройках интерпретатора), и только потом услушал из урока, что работать они и не должны в CE. При этом ранее оговаривалось, что для демонстрации будет использоваться именно CE версия IDE. Аналогично с грантом на createdb. Про reverse("book-list"): 1) появление -list выглядит "магическим" 2) если у меня есть уже url book-list, что тогда будет делать reverse - отдаст предпочтение первому встретившемуся в urlpatterns?
Курс бесплатный , не все выходит гладко.. по поводу reverse , если урл book-list то это не важно для reverse, ему нужен base-name для этого урла. Если будет дубликат то скорее всего будет ошибка на старте сервера , не проверял , можете проверить и сюда написать .
@@SeniorPomidorDeveloper это не претензия, а пожелание. Все хорошо! По дубликатам в name для урлов проверил - сама Django не ругается, конфликт решается тем, что побеждает тот, кто ниже в urlpatterns. При дубликатах в самих url побеждает тот, кто выше.
Подскажите пожалуйста тест не проходит assertEqual(serializer_data, response.data) serializer_data это питоновский словарь а response.data OrderedDict говорит что они не эквиваленты
@@SeniorPomidorDeveloper если создать 2 объекта модели, то исключение не возникает, потому что сериалайзер тоже возвращает OrderedDict и тест проходится. А если 1 объект, то сериалайзер возвращает питоновский словарь Я воспользовался советом Конвертировал OrderedDict в dict, Так тоже проходит
@@SeniorPomidorDeveloper да проходит Видимо проблема была в том, что OrderedDict находился внутри списка Спасибо, что отвечаете на вопросы! Есть ещё вопрос: Как на практике реализуется drf + vue.js или drf+ react.js У вас в уроках видел что вы просто к шаблону подключили скрипт с vue Так же видел другую реализацию с vue cli
Сложно сказать, я совсем далёк от фронтенда. На практике обычно все шаблоны и js на фронтенде, вся логика и api на бекенде и эти две части совсем никак не связаны в коде. Работают как два приложения , клиентское и серверное. То , как сделано в курсе , это скорее чтобы продемонстрировать сам принцип api взаимодействия. Есть сервер nginx, которые который отдаёт статические данные , типа js и html, а все остальные запросы переадресует дальше , уже на Django сервер.
Тут не совсем про установку СУБд postgres, тут скорее про создание там базы и юзера , но саму программу нужно просто скачать и установить. А создать базу и пользователя можно вот как в этой статье www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04-ru CREATE DATABASE myproject; CREATE USER myprojectuser WITH PASSWORD 'password'; По сути только две эти команды , а ALTER можно уже делать как на моем видео
@@SeniorPomidorDeveloper Наверное, не совсем правильно сформулировал вопрос. Саму базу я поставил, правда, со второго раза, при первой инсталляции прошла какая-то ошибка. К джанго я базу тоже подключил, правда не совсем так как в видео. Дошел в этом видео до момента создания пользователя и не могу его создать, у меня команды типа createuser, createdb не работают в строке. Вот это бы хотелось решить. В первом видео подключил базу со стандартным пользователем 'postgres'. Хотелось бы разобраться полностью, думаю пригодится в будущем. В командной строке и через терминал я не могу заюзать createuser, createdb
Это команды которые я встречал только на Мак или Линукс , для винды нужно подключиться в саму консоль Postgres и написать типа тех команд, которые я написал в прошлом комментарии
Found 1 test(s). Creating test database for alias 'default'... Got an error creating the test database: ОШИБКА: нет прав на создание базы данных Что не так?
Может кому поможет: дайте пользователю, кторого указываете в настройках DATABASES (USER) права на создание БД: alter role books_user createdb; - если пользак books_user указан
ALTER ROLE books_user WITH CREATEDB; Если у вас возникла такая же ошибка, прописывать это нужно в SQL Shell. П.с. Пишу этот комент для тех кто в будущем будет искать ответ ;)
@@alexsidikov3426 эта проблема решается в самом видео, просто чуть позже необходимого. Таймкод: 12:47 P.S. Тоже пишу больше для тех, кто в будущем ветку прочитает :)
привет, в чем может быть проблема: по урока юнит тестов все было ок, но начал переписывать по текущему урову и тесты не проходят, меняю на старые, тоже не проходят, пишет что нет такого модуля как test_get скрин: prntscr.com/w5dlan
А мне нравятся такие приключения, когда автор опускает некоторые "очевидные" вещи. И ты такой!!! А что это?! А как!? А почему!!! ? А остановиться-то уже не можешь) И погнал по интернетам, да по документам искать) После того, как находишь ответ на свой вопрос, спустя 3 часа мозгового штурма в одну каску, испытываешь невероятное наслаждение и возвращаешься к видео Сеньора-Помидора, благодаря про себя его за этот опыт) Я помню, читал книжку такую "Сам себе программист" - Автор: Кори Альтхофф, так вот. Он в конце так и пишет, что дальше будет все состоять из постоянного поиска ответов и множества удивлений, в духе: "ТАК ВООООТТТ ЧТОО это ЗНАЧИТ!!))". А вообще, хочу сказать Сеньору @SeniorPomidorDeveloper ОГРОМНОЕ СПАСИБО за такое количество новой и полезной ин-фы для тех, кто пытается обучится этому сложному ремеслу... веб-программированию. Я до этого курса и не знал АБСОЛЮТНО ничего о БД, SQL, postgre... Так же с тестами.
вызывается ошибка raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. при запуске тесто, в остальном работает нормально. ставил переменную окружения, не помогает. подскажи, в чем может быть проблема?
Подниму повыше, решение. А то капец времени потратил. При возникновении ошибки: django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. добавляем в каталог с тестами в файл __init__.py : import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "books.settings") django.setup()
Эта ошибка обычно говорит что при запуске не найден/не указал файл settings для Джанго. То есть при запуске manage.py команды его просто достаточно указать через -settings= . Можно конечно и в сами тесты добавить такое, но тогда если запускать их, не из корня, а допустим отдельные тесты, то тоже работать не будет, придется в каждый __init__ каждой директории добавлять
raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting REST_FRAMEWORK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. Выводит это после запуска теста апи, но тесты с терминала работают
raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting REST_FRAMEWORK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. При запуске теста выходит такое. Но с терминала тесты работают
Ошибка: django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES
(выводит целое полотно из ошибок, в конце данная ошибка)
Решение:
import django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "books.settings")
django.setup()
В файл где лежат тесты. За место "books" пишите название папки, где лежат settings
Всем привет, доброго дня!
Спасибо! Полчаса убил на поиски. Надо ваш комментарий выше поднять.
Ошибка возникла из-за Винды? Почему на MacOs всё сразу работает?
Закрепил коммент
Если вы используете django = "^5.1.2" и в тесте используете django.test - установите psycopg2 локально к python-у, который используется в системе. Почему-то эта библиотека не видит psycopg2 в виртуальном окружении...
Как же замечательно, что наткнулся на ваш канал.
Супер. Очень полезное видео! Классно, что это было показано на реальных примерах, а то много где обычно просто тестируется базовые математические операции и на этом все.Спасибо!
Спасибо Вам! Отличное изложение материала. Действительно, для тех кто хочет двигаться своим трудом, а не ,,питон за полчаса три млн просмотров,,. Спасибо.
Жалко, что у Вас нет больше роликов. У Вас отлично получается. Успехов!
Будут
Все знаю. Но автор так увлекательно рассказывает - лучше любого фильма
😁спасибо
Спасибо большое за урок, узнал много нового. Тесты отдельный респект, также вспосмнил про терминал и psql. Обязательно дойду до конца
Супер! Рад что понравилось. Там еще следующий курс есть про оптимизацию, сделан на основе докера
Ну моё почтение за такие уроки) Не перестану это писать, очень интересно, познавательно и не скучно! Спасибо тебе большое, надеемся не остановишься на этом)
Спасибо за отзыв! Да, есть ещё в планах записать кое-что.
@@SeniorPomidorDeveloper ну тогда с нетерпением ждем!) Лично от себя, очень интересная такая тематика, как ревью кода, людям это заходит, ибо это невероятно познавательно и бесценно)
Сеньор, у тебя топовая подача материала! Спасибо тебе большое)) Возвращайся, очень ждем продолжения по джанго(как пример можно было бы раскрыть темы переопределения разных методов при сериализации, кастомизация фильтров, сигналы, миддлваре)
Очень доходчиво и подробно все рассказано и показано на практике. Лично для меня очень актуально, я как раз начал разбираться с тестированием на своём проекте)
Спасибо огромное за ваш труд!!!
Ошибка появилось при проверке через shell все работает. При запуска юнит теста. Спасибо за уроки )))
Как раз хотел изучить тестирование в Джанго и Celery. А на этом канале есть и то, и другое.
Да-да, 2 года прогал без тестирования, закидайте меня гнилыми ПОМИДОРАМИ.
P.S. Комментарий больше для продвижения канала. Спасибо огромное за знания. Всё очень доступно и круто!
Спасибо вам что смотрели и комментировали! И удачи в работе и творчестве !
Какой хороший формат видео. Спасибо Вам большое!
Лучшее, что я смотрел по тестам, спасибо.
Чтоб мне так раньше объясняли. Подписался)
Спасибо. Понял зачем нужны тесты.
Спасибо за видео! Ждем еще с нетерпением, отличные уроки)
Спасибо коллега за хорошие видео!
Нужно было вспомнить про то как проверить coverage. По памяти сразу к тебе.
Великолепно. Спасибо!
В Git очень полезно и необходимо уметь работать ))). Будем учиться)))
Чел, просто АХ*ЕННО! В который раз натыкаюсь на твои ролики и как индусы всё по полочкам только на русском))
🤣 люблю индусов! Если привыкнуть к их произношению то вообще отлично!
после каждого запуска теста test_serializers, в таблице store_books добавляются новые записи Test Book 1 и Test Book 2
BookSerializerTestCase наследуемый от TestCase , создает запись в основной бд и не удаляет её после завершения теста. Если наследоваться от APITestCase, то тогда все ок работает
спасибо, очень круто!
Братан Варламова свернул в Джангу)
😁
Спасибо, бро
Нужно ли хранить html вывод от coverage в репозитории или добавлять в gitignore? С одной стороны, команда будет понимать насколько хорошо код покрыт тестами, с другой стороны репозитория засоряется лишними файлами
Не, не нужна она . Можно удалять
как всегда - всё супер!
как ты зарабатываешь? фрилансер ? или официально в какой компании? как много времени заняло у тебя дойти до такого уровня, интересно с такими скилами насколько хорошо можно зарабатывать из дома? п.с. работаю в госкомпании (инженер - программист в асутп), огромное желание уйти в разработку из дома =)
Я думаю что со скилами из всех этих курсах , вполне можно найти работу как минимум Джуниор , а если ещё немного будет опыта то и до middle.
Я работаю старшим программистом , в одной небольшой международной компании . Я достаточно быстро достиг среднего уровня, во многом из-за того что был опыт сис админа . С базовым знанием питона , по идее за пол года можно так прокачать веб , чтобы найти нормальную работу
При создании теста для сериализатора импортировал TestCase не из dgango.test , а из unittest.
Получился неожиданный результат)
При каждом создании книг для теста, они сохраняются в БД. Т.е., как я понял не создается временная БД для теста, а тупо записывается в общую. Вернее, я уверен, что не создается, т.к. во время запуска теста, используя TestCase из django, там четко написано, что:
Creating test database for alias 'default'...
..........
Destroying test database for alias 'default'...
По идее и там и там должна новая БД создаваться. Странно , не знаю почему так получается
Спасибище, прямо спас!
На примере этого урока видно полезности "Полой" версии Пайчарма, я такой "Так, почему него вылезло это окно..так и инит автоматом...а это что ? блин, тут ручками писать придется". Возможно, конечно, я просто что-то не настроил, но вроде больше похоже на "А он прав, стоит купить в дальнейшем"
Да, пайчарм про - это топовая IDE. Они мне за рекламу не платят , к сожалению) но очень рекомендую. Работа с дебаггером через тесты это очень полезный инструмент. Нигде такого не видел больше.
Кстати, господа, вы можете получить бесплатную лицензию, если студент или на курсах от Stepik (они бесплатные) по тому же python и работать с удобными фичами )
☝️
Супер! Спасибо!
я искал медь, а нашёл золото
Спасибо.
Привет! про assertEqual, как повлияют изменения в сериализаторе если в тесте используется тот же сериализатор? не очень понял как работает. Спасибо!
Ну если в тесте тот же, то никак. Просто обычно тесты отдельно пишут для сериализатора , а в тестах вью его просто используют. Как именно я в видео сделал, честно говоря, уже не помню
Спасибо за ответ!@@SeniorPomidorDeveloper
спасибо!😎💥👍
Отличное объяснение, спасибо! У меня все получилось :) А почему вы не используете setUpTestData?
Пардон, нашла ее в следующем видео :)
Классный урок! Почему то у меня не работают тесты через правую кнопку мыши, ну это не так важно видимо, главное в консоли все ок
Спасибо. Может это только в pycharm professional такая штука
Спасибо за курс! Очень мало таких продвинутых курсов!
Хотелось бы еще уточнить по тестированию API - у меня не совсем получается по твоему шаблону, т.к. у меня в модели включен 'ordering' - да и скорее всего у всех так. Но сериалайзер возвращает несортированные данные (возвращает в порядке как получает..). А response наш возвращает уже сортированные данные. Как это обойти? Посоветуй плиз.
Это домашнее задание)
@@SeniorPomidorDeveloper честно-говоря, думал целый день, и только утром додумался - просто добавляем вставляемые обьекты сначала в queryset = .objects.all(), а потом передаем его в сериалайзер! ура)
А не работает: "django.urls.exceptions.NoReverseMatch: Reverse for 'book-list' not found. 'book-list' is not a valid view function or pattern name ". Возможно в Django 4, что-то поменялось. В лоб решения не нашел.
На 21:55 почему у нас нет книг если они у нас как бы есть в базе? Это типа для тестов создается временная бд и в рамках этого класса там как бы отсутствуют данные пока мы их не пропишем, и там всегда будут только те данные которые мы сами пропишем именно в КЛАССЕ?
Ну да. Каждый тест (то есть каждая функция тестового класса) создает чистую базу и все данные в ней только для этого теста.
Не понимаю, тесты, пишет "relation does not exist"...
Спасибо огромное, очень позновательно, как вы делаете быстрый импорт? Это какая то библиотека на пичарме?
Это не библиотека . Просто пишу “Alt + Enter” и он делает импорт , а если вариантов с таким именем несколько то он спросит какой конкретно мне нужен. Это все PyCharm
@@SeniorPomidorDeveloper понял, спасибо
подскажите как законектиться в БД что бы прямо с консоли прописывать команду createuser -s -P superadmin
Эти команды только в ОС работают , для этого не нужно коннектится к БД. Если их нет , то надо другими способами юзера создать. Можете зайти в группу телеграмм , может там кто-то подскажет подробнее . Ссылка в профиле
Супер!!
Ваше видео по тестам очень помогает!
Но объясните, пожалуйста, Вы пишете команду psql --username=superadmin books_db чтобы привязать нового суперпользователя к базе, а затем старому владельцу базы book_user даете права создавать базы. Получается, теперь главный пользователь superadmin, а book_user только создает базы для тестов? Можно ли было наоборот суперадмину дать только права на создание баз? При этом, book_user все еще является пользователем в настройках проекта
Честно говоря, я уже не помню почему конкретно так. Я думаю что все действия с базой проекта должен делать специальный юзер этой базы , типа book_user . А нафига этот superadmin нужен я уже не помню.
В любом случае авторизовывать приложение под админом базы это не верно. В СУБД типа Postgres может быть много баз данных . Каждая связана с каким-то отдельным проектом и у каждой свой пользователь, которого мы пропишем в настройках проекта . Мы не можем админа прописать в настройках проекта - это типа не безопасно .
На сколько я понял, через pgAdmin, у каждой бд должен быть владелец, им как раз и является book_user, в нашем случае. А superuser может раздавать права всем юзерам и заглядывать во все бд, на правах главного. Я лишь могу предположить, что под каждый проект создавать отдельного юзера под бд проекта - это лишь рекомендация, для удобства и безопасности. Но пока что я пользуюсь PgSQL пару дней и создал первый проект с ней, так что не могу уверенно заявить удобно это или нет.
Такая проблема, в какой-то момент в терминале, когда ввожу команду "manage.py test...", он не выводит ничего, ни ошибки, ничего вообще, просто переключается на следующую строку для ввода. Почему так? Только что все работало
Такой бывает когда комманда на завершена. К примеру если знак \ поставить в конце строки или типа того
@@SeniorPomidorDeveloper я перезапускал терминал, но всё так же
Вероятно что сама команда написана с ошибкой . Как вариант попробовать альтернативный терминал windows, или можно сделать скриншот и спросить в чате , ссылка в профиле
@@SeniorPomidorDeveloper м, я переключил на power shell и увидел что команда исполняется в консоли и сразу же исчезает
Имхо, такие тесты API эндпоинтов хороши только при простом функционале. Если бизнес логика сложная, или потенциально будет усложняться, то такие тесты будут уже скорее интеграционными, а не юнит. Даже в рамках API стоит писать такие тесты, как в примере с мат. операциями.
Ну и pytest нынче на голову выше джанговских тест кейсов, один только parametrize слишком мощная штука
Parametrize вроде не pytest фича. По крайней мере мы его постоянно в unit test используем.
Бизнес логику вполне неплохо тоже тестировать как юниты. Хотя чаще мы тестируем конечно связку функций, чем каждую по отдельности. Можно писать в связке с api эндпойнтом , можно его отдельно и логику отдельно. Можно логику разбирать на части или тестировать целиком . По моему опыту это не важно. Главное чтобы тесты в принципе были и чтобы покрывали и проверяли что нужно. Как широко каждый из тестов писать решает сам разработчик, и мы даже не особо стараемся это контролировать. У нас в проекте сейчас 15.000 юнит тестов, и они постоянно растут, за всему не уследишь и это не нужно.
@@SeniorPomidorDeveloper В целом согласен, необходимость тестировать изолированно отдельные компоненты не для каждого проекта, это все ситуативно. Я, по возможности, предпочитаю изолированно тестировать функционал, т.к. проще тестировать граничные кейсы и классы эквивалентности, которые могут потеряться при тестировании какого-то флоу целиком.
Привет! Ты не мог бы подсказать, как передать request в тесты?
Привет! Заходи в группу в телеграмм, может там найдётся ответ. Ссылка в шапке профиля на TH-cam
Привет , почему комманд нот фоунд на комманду , createuser -s -P superadmin ?
Это нормально для Windows, надо загуглить как создать юзера через консоль sql. Вроде обсуждали это в группе в телеграмме, поищите там . Ссылка в профиле
@@SeniorPomidorDeveloper спасибо , зайду в телегу посмотрю а то что-то с установкой постгре вчера 2 часа пытался все сделать и вроде сделал но пока что ничего не появляется в базе , хотя миграции делаются и настройки все на постгре стоят ,и да , это я на маке вызываю эту команду но что-то у меня мак капризный
Надо смотреть какую ошибку пишет Django. Может он и не пытается подключиться к постгрес базе?
Дякую)
Будь-ласка
спасибо.
Спасибо очень интересный курс.
Не могу понять, откуда берется book-list в reverse?
Т.е. как django знает, что это именно book? Нигде же явно не определено это. 18:16
Это в urls привязывается name для каждого урла
Когда мы создавали роут для нашего вьюсета, он автоматически генерирует как урл, так и имя для него. Если хочешь наглядности, то пропиши print(router.url) для каждого зарегистрированного тобой роута.
@@alexandr6307 спасибо, а то не мог найти в чем ошибка
Подписался
У меня почему-то не видит те библиотеки для импорта, что у Вас. Например, не показало импорт APITestCase из джангореста, хотя я его установил. Как это исправить?
Как будто PyCharm не видит интерпретатора.. Это не так важно, можно руками прописать импорты, их там мало
@@SeniorPomidorDeveloper Спасибо, что отвечаете. Теперь выяснилось, что при запуске тестов у меня создалось 10 тестовых книг с разными id, хотя их не должно быть. Вроде бы за вами все повторил. Понимаю, что это гадание на кофейной гуще, но может вы знаете, почему так? (на 3 уроке увидел)
Нашел, где добавляется. При тесте сериализатора база почему-то не очищается
@@MrCipecЧестно говоря, это было так давно, я уже не помню)
@@SeniorPomidorDeveloper для Вас это было давно, а для нас все еще актуально и интересно!) Спасибо большое за труд и работу
а почему вы решили не пользоваться юзером postgres, который по умолчанию есть, он же и суперюзер?
Да как-то принято под проект создавать отдельного юзера . Наверно ещё с тех времён , когда на одной базе хостились по несколько проектов
@@SeniorPomidorDeveloper понял, не знал о такой практике. спасибо
Делал всё как в видео, но получил ошибку
2022-12-05T12:26:06.786361282Z RuntimeError: Model class short_link_controller.models.ShortLinkService doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
Пробовал импортировать прописывать в settings... Ниичего не помогает. 2 дня пытаюсь решить вопрос. Как импортировать то правильно?
вроде не было ничего про ShortLinkService ?
@@SeniorPomidorDeveloper оказалось, у меня не было установлено несколько библиотек...
Очень жаль что не показал начальную настройку PostgreSQL, у меня Linux и начать делать все как на видео проблематично чисто из-за БД(
Да я никак ее и не настраивал . Просто установил.
Выдает ошибку: : Имя "coverage" не распознано как имя командлета, функции, файла сценария
или выполняемой программы. При том, что все установлено
Сложно так сказать не видя вашего проекта. Может запускаете не из virtual env или он установлен , но не туда
в общем, решил.. почему-то он не видел coverage при установке через настройки, а после pip заработал
@@SeniorPomidorDeveloper после вашего первого курса пытался начать курс по оптимизации, но комп просто не вывозит
Да, без докера там сложно будет.
тест лучше писать в таком формате def test_func(a, b, c):
if c == "+":
return f"{a} {c} {b}"
if c == "-":
return f"{a} {c} {b}"
if c == "*":
return f"{a} {c} {b}"
print(test_func(2, 5, "-")) тогда не забудете знаков
лучше каждый тест на функции разбить, тогда понятнее будет, где ошибка вылезла.
Got an error recreating the test database: database "test_db" is being accessed by other users
DETAIL: There is 1 other session using the database.
Видимо тесты запустили два одновременно
@@SeniorPomidorDeveloper к сожалению - нет(
так и не нашел способ решить эту проблему. решил пока делать без тестов.
я и дб удалял, и принудительно сессии все завершал, после запуска теста создается новая бд и какая-нибудь ошибка будет про то, что есть уже другие сессии к ней. даже не знаю в чем дело..
Можно зайти в Postgres и удалить там все базы данных, кроме основной . Иногда они там залипают , когда запуск тестов не завершается корректно
@@SeniorPomidorDeveloper в любом случае спасибо!
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
что это значит?
Появляется при запуске unitesta с функцией operations как на 8 минуте
Исправил, добавил в каталог с тестами - __init__.py и в него:
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'books.settings')
import django
django.setup()
При запуске теста надо указывать путь до файла с настройками через “-settings”. Приложение не видит настроек в этот момент
@@montecristo31 мне сначало не помогло, однако после "pip install pytest-django" в терминале - все начало работать
@@montecristo31 Спасибо, у меня та же ошибка вылазила, решение не мог найти. Но что примечательно, если импортировать TestCase из unittest, а не из django.test, то все отлично работает.
а ты не делаешь так чтобы отдельно сервисы тестить отдельно репозитории?
Всмысле специально репозиторий для тестов ?
@@SeniorPomidorDeveloper ну на ларе бизнес логика в сервисах а выборки в репозитория и они тестяться
Не знаю, так вроде не делал.
@@SeniorPomidorDeveloper я там курс смотрел архитектор ПО так там говорят что надо так делать легче тестить сервисы репозитории разделить логику
@artemunix5223 да кому как удобно. То, что я рассказываю это стандартный способ. Большинство Джанго проектов тестируется так.
Приветствую автора этого канала. У меня возникла ошибка raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Вы могли бы помочь.
admin admin да, есть такое . PyCharm Community Edition не поддерживает запуск Django и ее тестов . Покупайте Professional !
импортируйте из unittest "from unittest import TestCase"
В любом случае Django не будет активирован в тестах
@@mrm1tn1ck спаибо сработало , убил 3 часа на это, пока не заглянул сюда.
@@mrm1tn1ck Спасибо!
Откуда ты брал информацию? есть ли хорошая книга по этой теме для новичков ?
Брал из опыта. Книга по Unit тестам для новичков? Не думаю . Для новичков лучше курсы.
@@SeniorPomidorDeveloper посоветуешь какие-то ?
Советую мой последний курс - Оптимизация Джанго. Хороший такой курс получился, не могу не посоветовать 😁
Если серьезно, я не особо интересуюсь курсами. Спроси в группе в телеграмме, ссылка в профиле , может там что подскажут .
@@SeniorPomidorDeveloper спасибо, ну курс гляну уже после этого
Добрый день. Будет ли фронт на Vue JS, в рамках этого курса?
Не, фронт больше не будет. Я в нем не очень хорошо разбираюсь, если честно . Зато будет бек интересный !
@@SeniorPomidorDeveloper Ну да, по тестам это первое адекватное видео на русском наверное)
Спасибо!
@@SeniorPomidorDeveloper А есть ли какие либо мессенджеры или группы? Для связи и возможно вопросов касаемо python и Django? В Ютубе не особо удобно, как по мне :)
Согласен, но канал у меня пока не большой . Если будет подписчиков побольше то сделаем стрим с вопросами , может когда-нибудь и до группы дойдём , но не ближайшее время .
Коллеги, у кого такая борода:
ImportError: 'tests' module incorrectly imported from '..\project\app\tests'. Expected '..\project\app'. Is this module globally installed?
Если, как в видео создали одноименный пакет, то удаляйте файл tests.py из папки приложения...)))
Здравствуйте, не подскажете с чем связанно данное исключение: TypeError: argument of type 'ConnectionHandler' is not iterable. Появилось при самом первом тесте.
Посмотрите внимательно в свой код, может что-то не так написано. Без полного Трейси невозможно понять откуда ошибка .
всё, до меня дошло. всем кто читает это и такой же растяпа как я, знайте - если у вас такая проблема, возможно вы имея бесплатную версию pycharm, пытаетесь использовать графический интерфейс тестирования :D. в консоли всё работает как нужно.
@@SeniorPomidorDeveloper вы были правы, всё из-за невнимательности)
Аа, да , мне тоже всегда хочется в интерфейс нажать по привычке .
createuser -s -P superadmin
Enter password for new role:
Enter it again:
createuser: error: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
что делать с этой ошибкой? И к какой базе ты подключился?
Похоже что postgres или не установлен или не запущен или находится на каком-то необычном порту..
Можно вот это попробовать stackoverflow.com/questions/42653690/psql-could-not-connect-to-server-no-such-file-or-directory-5432-error
@@SeniorPomidorDeveloper был выключен,спасибо!
@@SeniorPomidorDeveloper после этого у людей может быть FATAL ERROR, второй комментарий этой ссылки поможет stackoverflow.com/questions/16973018/createuser-could-not-connect-to-database-postgres-fatal-role-tom-does-not-e
Хорошо
Reverse for all-list (all - это у меня вместо book) not found. 'all-list' is not a valid view function or pattern name. Вот такое вылетает, есть ли какие-либо предположения, что это может быть?
Надо открыть в браузере несуществующую страницу и Джанго должен написать какие урлы у него есть , если в дебаг режиме
@@SeniorPomidorDeveloper в этом плане вроде находит юрл такой: api/v1/musicians/ ^all/$ [name='all-list'], или я что-то путаю?
Не знаю)
Сложно так сказать , не видя кода и прочее
Победил эту проблему? У меня то же самое, делаю все, как на видео, но метод reverse выдает ошибку.
Здравствуйте, подскажите, пожалуйста, у меня при запуске теста возникают проблемы при импортировании класса TestCase с пакета django.test. (возбуждается такая ошибка - TypeError: argument of type 'ConnectionHandler' is not iterable). А когда импортирую с пакета unittest все тесты проходят. Сидел вчера всю ночь, но так чет и понял в чем дело.
Здравствуйте! Честно говоря , первый раз вижу такое. Скорее всего проблема в версиях .. Возможно Джанго у вас 3+ , а в видно версия меньше
@@SeniorPomidorDeveloper при чем знаете, поменял первую строчку на "from django.test import testcases" и на "class LogicTestCase(testcases.TestCase):". После этого запустил через терминал manage.py test store.tests.test_logic и.. вуаля, тест пройден. Видимо, я где то накосячил )
Хм .. возможно. Там где-то код был .. github.com/chepe4pi/books_lessons/ если нужно сравнить
@@SeniorPomidorDeveloper а еще вылезла ошибка TypeError: argument of type 'ConnectionHandler' is not iterable. Она возникает в случае, если я запускаю файл test_logic.py в PyCharm через контекстное меню командой Run.
Понятно, значит что-то с настройками pycharm
Лучше сразу говорить о "подводных камнях", а не оставлять их сюрпризом на потом. Дело в том, что, как, возможно, и многие, смотрю и сразу пытаюсь выполнять.
Так над тем, почему не запускаются тесты в CE через правый клик провозился приличное время (и даже настроил, задав определенные опции в настройках интерпретатора), и только потом услушал из урока, что работать они и не должны в CE. При этом ранее оговаривалось, что для демонстрации будет использоваться именно CE версия IDE.
Аналогично с грантом на createdb.
Про reverse("book-list"): 1) появление -list выглядит "магическим" 2) если у меня есть уже url book-list, что тогда будет делать reverse - отдаст предпочтение первому встретившемуся в urlpatterns?
Первый вопрос снимается. Описано тут www.django-rest-framework.org/api-guide/routers/#simplerouter
Курс бесплатный , не все выходит гладко.. по поводу reverse , если урл book-list то это не важно для reverse, ему нужен base-name для этого урла. Если будет дубликат то скорее всего будет ошибка на старте сервера , не проверял , можете проверить и сюда написать .
@@SeniorPomidorDeveloper это не претензия, а пожелание. Все хорошо!
По дубликатам в name для урлов проверил - сама Django не ругается, конфликт решается тем, что побеждает тот, кто ниже в urlpatterns.
При дубликатах в самих url побеждает тот, кто выше.
Подскажите пожалуйста тест не проходит assertEqual(serializer_data, response.data)
serializer_data это питоновский словарь
а response.data OrderedDict
говорит что они не эквиваленты
Он умеет их сравнивать, проблема не в типе, а в данных. Можете убедиться, сконвертировав в dict()
@@SeniorPomidorDeveloper если создать 2 объекта модели, то исключение не возникает, потому что сериалайзер тоже возвращает OrderedDict и тест проходится.
А если 1 объект, то сериалайзер возвращает питоновский словарь
Я воспользовался советом
Конвертировал OrderedDict в dict,
Так тоже проходит
Хорошо. Проверьте так:
a = {'a': 1, 'b': 2}; b = OrderedDict(b=2, a=1); self.assertEqual(a, b)
Пройдёт проверка?
@@SeniorPomidorDeveloper да проходит
Видимо проблема была в том, что OrderedDict находился внутри списка
Спасибо, что отвечаете на вопросы!
Есть ещё вопрос:
Как на практике реализуется drf + vue.js или drf+ react.js
У вас в уроках видел что вы просто к шаблону подключили скрипт с vue
Так же видел другую реализацию с vue cli
Сложно сказать, я совсем далёк от фронтенда. На практике обычно все шаблоны и js на фронтенде, вся логика и api на бекенде и эти две части совсем никак не связаны в коде. Работают как два приложения , клиентское и серверное. То , как сделано в курсе , это скорее чтобы продемонстрировать сам принцип api взаимодействия. Есть сервер nginx, которые который отдаёт статические данные , типа js и html, а все остальные запросы переадресует дальше , уже на Django сервер.
Кто-нибудь может подсказать где доступно расписана установка PostgreSQL на Windows 10, чтобы можно было использовать команды в строке, как в видео? :(
Тут не совсем про установку СУБд postgres, тут скорее про создание там базы и юзера , но саму программу нужно просто скачать и установить. А создать базу и пользователя можно вот как в этой статье www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04-ru
CREATE DATABASE myproject;
CREATE USER myprojectuser WITH PASSWORD 'password';
По сути только две эти команды , а ALTER можно уже делать как на моем видео
@@SeniorPomidorDeveloper Наверное, не совсем правильно сформулировал вопрос. Саму базу я поставил, правда, со второго раза, при первой инсталляции прошла какая-то ошибка. К джанго я базу тоже подключил, правда не совсем так как в видео. Дошел в этом видео до момента создания пользователя и не могу его создать, у меня команды типа createuser, createdb не работают в строке. Вот это бы хотелось решить. В первом видео подключил базу со стандартным пользователем 'postgres'. Хотелось бы разобраться полностью, думаю пригодится в будущем. В командной строке и через терминал я не могу заюзать createuser, createdb
Это команды которые я встречал только на Мак или Линукс , для винды нужно подключиться в саму консоль Postgres и написать типа тех команд, которые я написал в прошлом комментарии
@@SeniorPomidorDeveloper ага, буду пробовать. Если не получится, буду пробовать через Ubuntu тогда ). Спасибо за ответы!
@@SeniorPomidorDeveloper а еще можно же через админку создать? pgAdmin4?
Found 1 test(s).
Creating test database for alias 'default'...
Got an error creating the test database: ОШИБКА: нет прав на создание базы данных
Что не так?
Напишите в общий чат , может кто поможет .. ссылка в профиле
Может кому поможет: дайте пользователю, кторого указываете в настройках DATABASES (USER) права на создание БД: alter role books_user createdb; - если пользак books_user указан
@@ДмитрийСергеев-л6г Дякую.
ALTER ROLE books_user WITH CREATEDB;
Если у вас возникла такая же ошибка, прописывать это нужно в SQL Shell.
П.с. Пишу этот комент для тех кто в будущем будет искать ответ ;)
@@alexsidikov3426 эта проблема решается в самом видео, просто чуть позже необходимого. Таймкод: 12:47
P.S. Тоже пишу больше для тех, кто в будущем ветку прочитает :)
привет, в чем может быть проблема:
по урока юнит тестов все было ок, но начал переписывать по текущему урову и тесты не проходят, меняю на старые, тоже не проходят, пишет что нет такого модуля как test_get
скрин: prntscr.com/w5dlan
чуть пытался изменить тест сериалиатора: prntscr.com/w5dycj тоже ошибка
в чем я могу ошибаться? идти дальше с ошибками не очень хочется
Ошибка по тому что нужна точка между классом теста и функцией . Точка, а не пробел
Почему сериализоторы разные не видно так. Нужно просто print сделать и будет понятно
👍
Будете ли вы выпускать видео каждый день?
Приблизительно через день, всего 10 выпусков будет.
Не понял зачем тестить маршруты если они динамичны и никуда не денутся в любом случае. reverse() и так нам даст обратку на endpoint url
😯
лучше всегда использовать команды в консоли вместо кнопок в IDE, ибо не у всех есть пайчарм
я специально использую бесплатную версию пайчарма.
ок
Вы по моему устали
воздух не хватает
это бывает)
курс "бесплатный" этим всё сказано ...
"это я об'яснять не буду, тут просто под нос побурчу, это найдете сами, тут просто молча написал"
Полностью согласен. Даже и начинать смотреть не стоило.
Но ведь автор ссылается на свой предыдущий курс, когда говорит, что не будет объяснять. Зачем повторяться и растягивать и так длинную лекцию
А мне нравятся такие приключения, когда автор опускает некоторые "очевидные" вещи. И ты такой!!! А что это?! А как!? А почему!!! ? А остановиться-то уже не можешь) И погнал по интернетам, да по документам искать) После того, как находишь ответ на свой вопрос, спустя 3 часа мозгового штурма в одну каску, испытываешь невероятное наслаждение и возвращаешься к видео Сеньора-Помидора, благодаря про себя его за этот опыт)
Я помню, читал книжку такую "Сам себе программист" - Автор: Кори Альтхофф, так вот. Он в конце так и пишет, что дальше будет все состоять из постоянного поиска ответов и множества удивлений, в духе: "ТАК ВООООТТТ ЧТОО это ЗНАЧИТ!!))".
А вообще, хочу сказать Сеньору @SeniorPomidorDeveloper ОГРОМНОЕ СПАСИБО за такое количество новой и полезной ин-фы для тех, кто пытается обучится этому сложному ремеслу... веб-программированию. Я до этого курса и не знал АБСОЛЮТНО ничего о БД, SQL, postgre... Так же с тестами.
вызывается ошибка raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
при запуске тесто, в остальном работает нормально. ставил переменную окружения, не помогает. подскажи, в чем может быть проблема?
Нужно указать при запуске теста правильный путь к конфигу Джанго через атрибут -settings
@@SeniorPomidorDeveloper указывал, не помогает
Спросите в группе в телеграмме, ссылка в профиле. Может кто подскажет. Можно со скриншотом
Подниму повыше, решение. А то капец времени потратил.
При возникновении ошибки:
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
добавляем в каталог с тестами в файл __init__.py :
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "books.settings")
django.setup()
Эта ошибка обычно говорит что при запуске не найден/не указал файл settings для Джанго. То есть при запуске manage.py команды его просто достаточно указать через -settings= . Можно конечно и в сами тесты добавить такое, но тогда если запускать их, не из корня, а допустим отдельные тесты, то тоже работать не будет, придется в каждый __init__ каждой директории добавлять
Подскажите почему такая ошибка
(venv) user@root books % ./manage.py test .
Found 5 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
....F
======================================================================
FAIL: test_ok (store.tests.test_serializer.BookSerializerTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/user/PycharmProjects/books_drf/books/store/tests/test_serializer.py", line 30, in test_ok
self.assertEqual(expecting_data, data)
AssertionError: [{'id': 3, 'name': 'Комикс Гримм 1', 'pric[132 chars]00'}] != [OrderedDict([('id', 3), ('name', 'Комикс [174 chars]0)])]
----------------------------------------------------------------------
Ran 5 tests in 0.069s
FAILED (failures=1)
Destroying test database for alias 'default'...
class BookSerializerTestCase(TestCase):
def test_ok(self):
book_1 = Book.objects.create(name='Комикс Гримм 1', price='176.50', sku='000005', count='20')
book_2 = Book.objects.create(name='Чистый Python 1', price='2350.00', sku='000006', count='200')
data = BookSerializer([book_1, book_2], many=True).data
expecting_data = [
{
'id': book_1.id,
'name': 'Комикс Гримм 1',
'price': '176.50',
'sku': '000005',
'count': '20',
},
{
'id': book_2.id,
'name': 'Чистый Python 1',
'price': '2350.00',
'sku': '000006',
'count': '200',
}]
self.assertEqual(expecting_data, data)
я менял цену, добавлял decimal не помогло. Как понять в чем именно ошибка?
Перед тем как сделать assertEqual нужно сделать print(expecting_data) и print(data), сравнить глазами и тогда будет понятно
@@SeniorPomidorDeveloper Спасибо. count передавал строкой, а нужно интом) Спасибо за ваш контент)
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting REST_FRAMEWORK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. Выводит это после запуска теста апи, но тесты с терминала работают
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting REST_FRAMEWORK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. При запуске теста выходит такое. Но с терминала тесты работают
Запуск тестов из pycharm работает только в платной версии
круто, полезно, спасибо большое!
Привет! Ты не мог бы подсказать, как передать request в тесты?