Заказ тестирования Django TestCase
Если в тестовом классе есть несколько методов, я обнаружил, что порядок выполнения является алфавитным. Но я хочу настроить порядок выполнения. Как определить порядок выполнения?
Например: testTestA будет загружен сначала, чем testTestB.
class Test(TestCase):
def setUp(self):
...
def testTestB(self):
#test code
def testTestA(self):
#test code
Ответы
Ответ 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
, они должны быть обновляется, чтобы работать независимо.