Подтвердить что ты не робот

Заказ тестирования Django TestCase

Если в тестовом классе есть несколько методов, я обнаружил, что порядок выполнения является алфавитным. Но я хочу настроить порядок выполнения. Как определить порядок выполнения?

Например: testTestA будет загружен сначала, чем testTestB.

class Test(TestCase):
    def setUp(self):
        ...

    def testTestB(self):
        #test code

    def testTestA(self):
        #test code
4b9b3361

Ответ 1

Принцип модульного тестирования заключается в том, что каждый тест должен быть независимым от всех остальных. Если в вашем случае код testTestA должен пройти до testTestB, тогда вы можете объединить оба в один тест:

def testTestA_and_TestB(self):
    # test code from testTestA
    ...
    # test code from testTestB

или, возможно, лучше было бы

def TestA(self):
    # test code
def TestB(self):
    # test code
def test_A_then_B(self):
    self.TestA()
    self.TestB()

Класс Test проверяет только те методы, имена которых начинаются с нижнего регистра test.... Таким образом, вы можете добавить дополнительные вспомогательные методы TestA и TestB, которые не будут запускаться, если вы их явно не назовете.

Ответ 2

Насколько я знаю, нет способа заказать тесты, кроме их переименования. Не могли бы вы объяснить, почему вам нужно запускать тестовые примеры в определенном порядке? В модульном тестировании это обычно считается плохой практикой, поскольку это означает, что ваши дела не являются независимыми.

Ответ 3

Чтобы обновить тему (из документации):

Порядок выполнения тестов

Чтобы гарантировать, что весь код TestCase начинается с чистого базы данных, тестовый бегун Django переупорядочивает тесты следующим образом:

  • Сначала выполняются подклассы TestCase.
  • Затем все остальные Django-based тесты (тестовые примеры на основе SimpleTestCase, в том числе TransactionTestCase) запускаются без определенного заказа и не применялись к ним.
  • Затем любые другие unittest.TestCase тесты (включая doctests), которые могут изменять базу данных без ее восстановления к его исходному состоянию.

Примечание. Новый порядок тестов может выявить неожиданные зависимости от теста порядок заказа. Это относится к доктринам, основанным на слева в базе данных с помощью данного теста TransactionTestCase, они должны быть обновляется, чтобы работать независимо.