Завершення фікстур

Вступ до тестування в Python

Alexander Levin

Data Scientist

Що таке teardown фікстури

  • Teardown фікстури — це процес прибирання (завершення) ресурсів, які були виділені або створені під час налаштування тестового середовища.

Згадайте аналогію з «пікніком»:

  1. Запросити друзів і приготувати їжу
  2. Розважатися!
  3. Прибрати — це і є teardown
Вступ до тестування в Python

Навіщо використовувати teardown

Важливо очистити середовище наприкінці тесту. Якщо не використовувати teardown, це може спричинити серйозні проблеми:

  • Витоки пам'яті
  • Низька швидкість виконання та проблеми з продуктивністю
  • Невірні результати тестів
  • Збої й помилки конвеєра
Вступ до тестування в Python

Коли використовувати

Коли варто використовувати:

  • Великі об'єкти
  • Понад один тест
  • Використання autouse

Коли не обов'язково:

  • Один простий скрипт з одним тестом
Вступ до тестування в Python

Ліниві обчислення в Python

  • yield — це ключове слово Python, яке дає змогу створювати генератори
# Example of generator function
def lazy_increment(n):
    for i in range(n):
        yield i
f = lazy_increment(5)
next(f) # 0
next(f) # 1
next(f) # 2
Вступ до тестування в Python

Як використовувати

Як використовувати:

  • Замініть return на yield
  • Розмістіть код teardown після yield
  • Переконайтесь, що код налаштування — лише до yield
Вступ до тестування в Python

Приклад teardown

@pytest.fixture
def init_list():
    return []

@pytest.fixture(autouse=True)
def add_numbers_to_list(init_list):
    # Fixture Setup
    init_list.extend([i for i in range(10)])
    # Fixture output
    yield init_list
    # Teardown statement
    init_list.clear()

def test_9(init_list):
    assert 9 in init_list
Вступ до тестування в Python

Підсумок

  • Визначення: Teardown фікстури — це процес прибирання ресурсів, виділених під час налаштування.
  • Використання:
    • Ключове слово yield замість return
    • Код teardown після yield
  • Переваги:
    • Запобігає збоям ПЗ
    • Запобігає втраті продуктивності
  • Коли використовувати: Завжди, якщо маєте більше ніж один тест!
Вступ до тестування в Python

Давайте потренуємось!

Вступ до тестування в Python

Preparing Video For Download...