Тестирование в django: каковы различия между setUpClass, setUpTestData и setUp в классе TestCase?
каковы различия между setUpClass, setUpTestData и setUp на TestCase класса?
более конкретно, каковы варианты использования для каждого?
что я понял:
setUpClass
- этот метод запускается один раз, перед всеми тестами в тестовом классе
setUpTestData
- этот метод выполняется один раз, если БД поддерживает транзакции. В противном случае он запускается перед каждым тест.
настройка
- этот метод выполняется перед каждым тестом в тест класс.
из понимания, о котором я упоминал выше, кажется, что setUpTestData находится в области между setUpClass и setUp. Почему нам нужен метод уровня класса для setuUpTestData, в то время как тот же эффект может быть достигнут либо setUpClass или setUp или сочетание обоих?
1 ответов
EDIT: обновление / исправление после комментария Alasdair
setUpClass
-
setUpClassиспользуется для выполнения инициализации класса-широкий/конфигурации (например, создание подключения, загрузки завис). При использованииsetUpClassнапример, чтобы открыть соединение с базой данных / сеанс, вы можете использоватьtearDownClassзакрыть их. -
setUpClassвызывается один раз для TestCase перед запуском любого из тестов. АналогичноtearDownClassвызывается после всех испытаний бежать.
Примечание в документации:
SimpleTestCase и его подклассы (например, TestCase,...) полагайтесь на setUpClass() и tearDownClass () для выполнения некоторой инициализации класса (например, переопределения параметров). Если вам нужно переопределить эти методы, не забудьте вызвать супер реализацию:
setUpTestData
-
setUpTestDataиспользуется для создания исходных тестовых данных на TestCase. Этот метод вызывается Тесткейса.setUpClass() (src) -
setUpTestDataвызывается один раз для TestCase, как описано в документация. В случае, если базы данных не поддерживают транзакции,setUpTestDataбудет вызываться перед каждым тестовым запуском (спасибо @Alasdair за исправление меня)
настройка
-
setUpбудет вызываться перед каждым тестовым запуском и использоваться для подготовки тестового набора данных для каждого тестового запуска.
используя setUpTestData позволяет повысить производительность тестирования, имейте в виду, что изменение этих данных в тестах будет сохраняться между различными тестовыми прогонами. Если необходимо перезагрузить, это можно сделать из setUp метод.
Если база данных, используемая для выполнения тестов, не поддерживает транзакции, повышение производительности отрицается (как setUpTestData будет вызываться перед каждым тестовым запуском)