Введение в фикстуры Python Test
По определению тестовая фикстура — это функция или метод , который запускается до и после выполнения блока тестового кода. Другими словами, это этап, выполняемый до или после теста.
На уровне модуля
Предположим, у вас есть тестовый модуль с именем test_my_module.py.
В test_my_module.py, функции setUpModule() и tearDownModule() являются фикстурами уровня модуля.
- Функция
setUpModule()запускается перед всеми методами тестирования в тестовом модуле.
- Функция
tearDownModule()запускается после всех методов в тестовом модуле.
См. следующий пример:
import unittest
def setUpModule():
print('Running setUpModule')
def tearDownModule():
print('Running tearDownModule')
class TestMyModule(unittest.TestCase):
def test_case_1(self):
self.assertEqual(5+5, 10)
def test_case_2(self):
self.assertEqual(1+1, 2)
Если вы запустите тест:
python -m unittest -v
То получите следующий вывод:
В этом примере setUpModule() функция запускается перед всеми методами тестирования и tearDownModule() функция запускается после всех методов тестирования.
На уровне класса
setUpClass() и tearDownClass() являются фикстурами уровня класса:
setUpClass()выполняется перед всеми тестовыми методами класса.
tearDownClass()выполняется после всех тестовых методов класса.
Например:
import unittest
def setUpModule():
print('Running setUpModule')
def tearDownModule():
print('Running tearDownModule')
class TestMyModule(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('Running setUpClass')
@classmethod
def tearDownClass(cls):
print('Running tearDownClass')
def test_case_1(self):
self.assertEqual(5+5, 10)
def test_case_2(self):
self.assertEqual(1+1, 2)
В этом примере мы добавили методы класса: setUpClass() и tearDownClass() в класс TestMyModule.
Если вы запустите тест, вы увидите следующий вывод:
На уровне метода
setUp() и tearDown() являются фикстурами уровня метода:
setUp()выполняется перед каждым тестовым методом в тестовом классе.
tearDown()выполняется после каждого тестового метода в тестовом классе.
Например:
import unittest
def setUpModule():
print('Running setUpModule')
def tearDownModule():
print('Running tearDownModule')
class TestMyModule(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('Running setUpClass')
@classmethod
def tearDownClass(cls):
print('Running tearDownClass')
def setUp(self):
print('')
print('Running setUp')
def tearDown(self):
print('Running tearDown')
def test_case_1(self):
print('Running test_case_1')
self.assertEqual(5+5, 10)
def test_case_2(self):
print('Running test_case_2')
self.assertEqual(1+1, 2)
Ниже показан результат теста:
В этом примере setUp() и tearDown() выполняются до и после каждого метода тестирования, включая test_case_1() и test_case_2().