В Django как я могу сохранить состояние базы данных после тестовой функции?
Предположим, у меня есть 3 тестовые функции в моем классе теста. test1 выполняет A до того, как все утверждения утверждают, а test2 выполняет AB, а test3 выполняет ABC.
A, B, C означают некоторые создания базы данных. Основываясь на механизме Django TestCase, для каждой тестовой функции будет создана новая база данных. Однако в моем случае test3 зависит от состояния данных test2, а test2 зависит от состояния test1.
У меня есть несколько вопросов:
Есть ли элегантный способ справиться с такой проблемой? (Я знаю, что приборы могут быть полезны. Но я хочу поддерживать данные, динамически созданные в предыдущих тестовых функциях)
Я твердо верю, что юнит-тесты должны быть независимыми. Как вы справляетесь с тестами взаимосвязей на уровне базы данных в Django?
2 ответа
Здесь вы пытаетесь использовать предыдущие тестовые наборы, чтобы написать свой следующий тестовый пример. В такой ситуации вы можете определить основные функции в setUp()
функция. Затем в тестовых случаях соответственно используйте setUp
, Функция setUp вызывается в начале каждого теста.
В основном, когда есть зависимые функции модульного тестирования, вам нужно сначала проверить код, который вы тестируете. Код должен быть разбит на блоки, которые можно тестировать.
Но могут быть некоторые исключения, в этих случаях наиболее целесообразно объединить тестовые функции в одну. Потому что, когда вы тестируете функцию, вы тестируете функциональность всей функции, а не ее части.