ElizabethBylatova / djangogirls

0 stars 0 forks source link

Написать тесты на существующие views #4

Open MaksimTitenko opened 5 years ago

MaksimTitenko commented 5 years ago

stopper #1 #2 #5 Подробнее о тестах: https://docs.djangoproject.com/en/2.2/topics/testing/ Примеры тестирования view: https://wsvincent.com/django-testing-tutorial/ Ограничения:

ElizabethBylatova commented 5 years ago

Предпочтительным способом написания тестов в Django является использование модуля unittest встроенного в стандартную библиотеку Python. Это подробно описано в документе « Написание и запуск тестов» . вырезка с документации

MaksimTitenko commented 5 years ago

https://docs.djangoproject.com/en/2.2/topics/testing/overview/ - следующая страница.

Django’s unit tests use a Python standard library module: unittest. This module defines tests using a class-based approach.

Here is an example which subclasses from django.test.TestCase, which is a subclass of unittest.TestCase that runs each test inside a transaction to provide isolation

Т.е. django.test - это как подкласс unittest, только с выполнением каждого теста в своём, изолированном, слое базы данных. Соответственно, если ты создашь в своём тесте какие-то объекты базы, то после окончания теста эти объекты будут удалены. Реальные данные пользователей не пострадают. А если сделать то же самое в unittest - придётся контролировать удаление созданных объектов, и каждый запуск теста будет влиять на скорость работы всей системы из-за механизма блокировок при выполнении транзакций в базу.