В Django как я могу сохранить состояние базы данных после тестовой функции?

Предположим, у меня есть 3 тестовые функции в моем классе теста. test1 выполняет A до того, как все утверждения утверждают, а test2 выполняет AB, а test3 выполняет ABC.

A, B, C означают некоторые создания базы данных. Основываясь на механизме Django TestCase, для каждой тестовой функции будет создана новая база данных. Однако в моем случае test3 зависит от состояния данных test2, а test2 зависит от состояния test1.

У меня есть несколько вопросов:

  1. Есть ли элегантный способ справиться с такой проблемой? (Я знаю, что приборы могут быть полезны. Но я хочу поддерживать данные, динамически созданные в предыдущих тестовых функциях)

  2. Я твердо верю, что юнит-тесты должны быть независимыми. Как вы справляетесь с тестами взаимосвязей на уровне базы данных в Django?

2 ответа

Решение

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

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

Но могут быть некоторые исключения, в этих случаях наиболее целесообразно объединить тестовые функции в одну. Потому что, когда вы тестируете функцию, вы тестируете функциональность всей функции, а не ее части.

Другие вопросы по тегам