Порядок тестирования Django TestCase - PullRequest
24 голосов
/ 06 апреля 2010

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

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

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

    def testTestB(self):
        #test code

    def testTestA(self):
        #test code

Ответы [ 3 ]

50 голосов
/ 06 апреля 2010

Принцип юнит-тестирования заключается в том, что каждый тест должен быть независимым от всех остальных. Если в вашем случае код в 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, которые не запустятся, если вы не вызовете их явно.

10 голосов
/ 06 апреля 2010

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

6 голосов
/ 14 февраля 2015

Для обновления по теме (из документации):

Порядок, в котором выполняются тесты

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...