Фікстури autouse

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

Alexander Levin

Data Scientist

Аргумент autouse

  • Необов'язковий булевий аргумент фікстури
  • Передається в декоратор фікстури
  • Коли autouse=True, функція фікстури виконується незалежно від запиту
  • Допомагає зменшити зайві виклики фікстур
Вступ до тестування в Python

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

Коли потрібно застосувати певні підготовки чи зміни середовища для всіх тестів.

Наприклад, якщо ми хочемо гарантувати, що всі тести:

  • Мають однакові дані
  • Мають однакові підключення (дані, API тощо)
  • Мають однакову конфігурацію середовища
  • Мають моніторинг, логування або профілювання

Усі такі випадки слід покривати аргументом «autouse».

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

Приклад autouse

Приклад «autouse»-фікстури:

import pytest
import pandas as pd

# Autoused fixture
@pytest.fixture(autouse=True)
def set_pd_options():
    pd.set_option('display.max_columns', 5000)

# Test function
def test_pd_options():
    assert pd.get_option('display.max_columns') == 5000
Вступ до тестування в Python

Autouse: неправильний приклад

Неправильний приклад «autouse»-фікстури:

import pytest
import pandas as pd

# Wrong autoused fixture
@pytest.fixture(autouse=True)
def wrong_fixture():
    return [1,2,3,4,5]

# Test function
def test_type():
    assert type(wrong_fixture) == list

Виправлений приклад фікстури:

import pytest
import pandas as pd

# Wrong autoused fixture
@pytest.fixture
def correct_fixture():
    return [1,2,3,4,5]

# Test function
def test_type(correct_fixture):
    assert type(correct_fixture) == list
Вступ до тестування в Python

Autouse: результат

Результат прикладу:

вивід прикладу autouse

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

Підсумок

  • Визначення autouse: необов'язковий булевий аргумент декоратора фікстури
  • Використання: @pytest.fixture(autouse=True)
  • Перевага: зменшує кількість зайвих викликів фікстур, спрощує код
  • Особливість: за autouse=True функція фікстури виконується незалежно від запиту
  • Коли застосовувати: коли потрібно зробити підготовки або зміни середовища
  • Приклади застосувань:
    • Читання й підготовка даних для всіх тестів
    • Налаштування підключень і параметрів середовища
    • Реалізація моніторингу, логера або профайлера
Вступ до тестування в Python

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

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

Preparing Video For Download...