Sobes.tech
Junior — Middle

Можете ли да обясните какво се разбира под mock-обекти при използване на pytest?

sobes.tech AI

Отговор от AI

Објекти mock во pytest се специјални објекти кои имитираат однесувањето на вистински објекти или функции за тестирање. Тие овозможуваат изолација на тестираниот код од надворешни зависности, како што се мрежни барања, бази на податоци или други компоненти, за да се провери логиката без извршување на вистински операции.

Во pytest, за создавање mock објекти, често се користи библиотеката unittest.mock, која обезбедува класа Mock и декоратори за замена на функции и методи.

Пример за користење mock за замена на функција:

from unittest.mock import Mock

def get_data():
    # Замислете дека оваа функција прави барање до надворешен API
    pass

def process():
    data = get_data()
    return data * 2

# Во тестот, ја заменуваме get_data
mock_get_data = Mock(return_value=10)

# Ја заменуваме функцијата get_data со mock
get_data = mock_get_data

assert process() == 20
mock_get_data.assert_called_once()

На овој начин, mock објектите помагаат да се контролира однесувањето на зависностите и да се провери како тестираниот код соработува со нив.