Есть ли функция, которая запускается в начале / конце сценария тестов? Функции setUp и tearDown запускаются до / после каждого теста.
Обычно я хотел бы иметь это:
class TestSequenceFunctions(unittest.TestCase):
def setUpScenario(self):
start() #launched at the beginning, once
def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
def tearDownScenario(self):
end() #launched at the end, once
На данный момент эти setUp и tearDown являются модульными тестами и распространяются во всех моих сценариях (содержащих множество тестов), один - первый тест, другой - последний.
python
unit-testing
лебедь
источник
источник
Ответы:
Начиная с версии 2.7 (согласно документации ) вы получаете
setUpClass
иtearDownClass
которые выполняются до и после запуска тестов в данном классе соответственно. В качестве альтернативы, если у вас есть группа из них в одном файле, вы можете использоватьsetUpModule
иtearDownModule
( документация ).В противном случае лучше всего будет создать собственный производный TestSuite и переопределить
run()
. Все остальные вызовы будут обрабатываться родителем, а run вызовет ваш код установки и удаления вокруг вызова родительскогоrun
метода.источник
У меня такой же сценарий, для меня методы setUpClass и tearDownClass отлично работают
источник
Для python 2.5 и при работе с pydev это немного сложно. Похоже, что pydev не использует набор тестов, но находит все отдельные тестовые примеры и запускает их все отдельно.
Мое решение для этого заключалось в использовании такой переменной класса:
С помощью этого трюка, когда вы наследуете от этого
TestCase
(а не от оригиналаunittest.TestCase
), вы также унаследуете значениеrunCount
0. Затем в методе runrunCount
проверяется и увеличивается значение дочернего тестового набора. Это оставляетrunCount
переменную для этого класса равной 0.Это означает, что
setUpClass
он будет запускаться только один раз для каждого класса, а не один раз для каждого экземпляра.У меня еще нет
tearDownClass
метода, но я думаю, что с этим счетчиком можно что-то сделать.источник
Вот пример: 3 метода тестирования обращаются к общему ресурсу, который создается один раз, а не для каждого теста.
источник