Open MaksimTitenko opened 5 years ago
Предпочтительным способом написания тестов в Django является использование модуля unittest встроенного в стандартную библиотеку Python. Это подробно описано в документе « Написание и запуск тестов» . вырезка с документации
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 - придётся контролировать удаление созданных объектов, и каждый запуск теста будет влиять на скорость работы всей системы из-за механизма блокировок при выполнении транзакций в базу.
stopper #1 #2 #5 Подробнее о тестах: https://docs.djangoproject.com/en/2.2/topics/testing/ Примеры тестирования view: https://wsvincent.com/django-testing-tutorial/ Ограничения:
Наследуемся от django.test.TestCase
coverage не используем
НЕ ИСПОЛЬЗОВАТЬ модуль unittest (почему нет - описано в доке по django)