FactoryBoy: как разобрать?

Я не понимаю, как работает teardown в FactoryBoy + Django.

У меня есть такой тестовый пример:

class TestOptOutCountTestCase(TestCase):
    multi_db = True

    def setUp(self):
        TestCase.setUp(self)
        self.date = datetime.datetime.strptime('05Nov2014', '%d%b%Y')
        OptoutFactory.create(p_id=1, cdate=self.date, email='[email protected]', optin=1)

    def test_optouts2(self):
        report = ReportOptOutsView()
        result = report.get_optouts()
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0][5], -1)

setUp запускается один раз для всех тестов правильно? Теперь, если бы у меня был второй тест и мне нужно было чистое состояние перед его запуском, как мне этого добиться? Спасибо


person Houman    schedule 14.11.2014    source источник


Ответы (1)


Если я вас правильно понял, вам не нужен tearDown в этом случае, так как сброс базы данных между каждым тестом - это поведение по умолчанию для TestCase.

Видеть:

В начале каждого теста, перед запуском setUp(), Django очищает базу данных, возвращая базу данных в состояние, в котором она находилась сразу после вызова миграции.

...

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

Или вы хотите ограничить создание экземпляров через OutputFactory определенными тестами?

Тогда, наверное, не стоит ставить создание инстансов в setUp.

Или вы создаете два варианта своего TestCase, один для всех тестов, которые полагаются на фабрику, а другой — для тех, которые не зависят от нее.


Что касается использования tearDown, проверьте этот ответ: Django, когда использовать метод разрыва

person arie    schedule 14.11.2014