Sobes.tech
Junior — Middle

Оё метавонед шарҳ диҳед, ки дар истифодаи pytest объектҳои mock чӣ маъно доранд?

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 кӯмак мекунанд, ки рафтори вобастагиҳоро назорат кунанд ва чӣ гуна коди санҷишшаванда бо онҳо ҳамкорӣ мекунад, санҷида шаванд.