Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

4.2 Введение в UnitTest
2 из 2 шагов пройдено

Введение в фикстуры 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().


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

python -m unittest -v

Я правильно понимаю эта команда запускает вообще все файлы с тестами которые есть в директории? Потому что у вас после нее отработали оба файла с тестами. Если я прав, как эта команда определяет файлы с тестами, по названию? 

@Георгий_Тимофеев, она запускает тесты из файлов, названия которых подходят под шаблон test*.py.