независимость индивидуальных методов тестирования в классе APITest в среде Django Rest

Я следовал учебнику для тестирования из документации APITestCase в dry site. Но я мог бы найти ответы на некоторые из моих сомнений в документе drf.

У меня есть подкласс APITestCase, как показано ниже

class GroupTest(APITestCase):
    def setUp(self):
        .
        .

    def tearDown(self):
        .
        .

    def test_case_A(self):
        .
        # I create a group here
        # but I dont delete the group object in case A
        .

    def test_case_B(self):
        .
        # Will the group object from case A exist in case B ?
        # are the different test methods in a APITestCase independent?
        .

Если у меня есть два тестовых случая в классе GroupTest, они независимы? будет ли объект группы, созданный в случае a, влиять на случай B?

2 ответа

  1. Нет, каждый тест будет выполняться на чистой базе данных. Если вам нужны некоторые сущности в БД-добавьте их в setUp (они будут доступны во всех тестовых наборах в классе) или непосредственно в тестовом наборе.

    После выполнения testcase выполняется откат всех изменений. Если у вас есть другие изменения, которые нужно отменить (например, вы создаете некоторые файлы) — сделайте это в tearDown.

  2. Тесты-хорошее место для экспериментов. Это легко и весело сделать некоторые временные тесты, чтобы проверить некоторые предположения.

    Например, чтобы получить ответ на свой вопрос, вы можете сделать 2 простых тестовых случая, каждый из которых должен создать какой-то экземпляр и проверить, существует ли экземпляр, созданный в другом тесте (используйте print()команды, чтобы увидеть, что происходит).