№1 Уникальная онлайн-школа обучения языкам программирования Python (Django), JavaScript, Kotlin В. Бовсуновского.

Смотреть видео о системе и почему не получается писать код у ребят и девчат.

1. Установка и настройка django-pytest в наш проект.

Для начала прочтите и посмотрите видео.

С тестами вы выучите язык в 100 раз быстрее.
Конечно же я дурак(что поздно понял роль тестов для новичка), когда-то я давал тесты немного на pro***.net(сайт удалён теперь все на одном сайте spb-tut.ru, но как то ими не интересовались, да и был там UnitTest.
И я как то забыл, а сам всегда занимался тестированием, когда не понимал механизм, чего-либо.

И вот именно, когда в 2020 году переделывал школу, я рассказал это в этом коротком видео,

В 100 раз быстрее выучите Python с Pytest.

Теперь главное. Мы с вами уже понимаем Django 4 и здорово продвинулись, нам этого мало. Нужно профессиональное понимание.

Подключим тесты:

Тесты нам дадут то что нам нужно:

Профессиональное понимание Джанго.

Что бы написать тест необходимо знать, что тестировать, как тестировать и как записать, так вот он алгоритм разбираться в тонкостях, получается тесты новичку нужны больше чем кому-либо, так как движение к профессионализму значительно ускорится в 100 раз.

И кроме этого, будем спокойны, что проект работает нормально. Погнали.

Перейти к уроку

2. Настроим pytest для работы с Django 4.

Теперь нам нужно прописать настройки, что бы pytest видел наш проект и другие мелочи учесть, что бы все работало. Давайте сделаем это.

Перейти к уроку

3. Напишем первый тест для нашего проекта на Django4.

Обратите внимание, я специально буду пропускать много, что бы вылазило, как можно больше исключений. Думаю с курса Джанго вы уже многие исключения изучили. Это прекрасная практика, продолжим её и далее.

Мы создадим первый тест и как вы увидите даже пару строк нам дадаут кучу размышлений.

В следующих уроках подробно разберём. что тестируется в Джанго, а что нет.

Сейчас я объясню относительно того, что мы будем делать.

Давайте создадим первый тест, а после будем писать проект и делать по ходу проекта тесты - это лучший вариант.

-

params = ['article1', None, '2021-12-28 10:42:45.568426', '2021-12-28 10:42:45.568607', None, '', ...]

    def execute(self, query, params=None):
        if params is None:
            return Database.Cursor.execute(self, query)
        query = self.convert_query(query)
>       return Database.Cursor.execute(self, query, params)
E       django.db.utils.IntegrityError: NOT NULL constraint failed: blog_post.author_id

/home/agate/Env/practice_djangoEnv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py:416: IntegrityError
--------- Captured stderr setup ----------
Creating test database for alias 'default'...
-------- Captured stderr teardown --------
Destroying test database for alias 'default'...
======== short test summary info =========
FAILED test_models.py::test_title_create
=========== 1 failed in 0.77s ============

Перейти к уроку

4. Домашнее задание по тестам.

Мы с вами создали первый тест, сейчас вам нужен мозговой штурм. Вам необходимо завершить тест и сбросить в группу. Что сделать рассказал в видео.

Запоминаем принцип. НЕ бегите с вопросом через пять минут, если что-то не получается. Нормально порыть 5 полных рабочих дней. если тогда не получается, тогда уже спрашивать.

Как правило 98% вопросов решается, в остатке вы имеете настоящий опыт и знание вопроса.

Перейти к уроку

5. Изменим нашу модель и поймём логику.

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

#

class Post(models.Model):

    ....................

    likes_post = models.ManyToManyField(User, related_name='post_likes', blank=True, verbose_name='Лайки')
    
    saves_posts = models.ManyToManyField(User, related_name="blog_posts_save", blank=True, verbose_name='Сохранённые посты пользователя')

    def total_likes_post(self):
        return self.likes.count()
    
    def total_saves_posts(self):
        return self.saves_posts.count()

    ...........

Перейти к уроку