Тестирование в 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 будет вызываться перед каждым тестовым запуском)