Junior — Middle
Можете ли да обясните какво означава понятието Scope в контекста на PyTest и как то влияе върху изпълнението на тестовете?
sobes.tech AI
Отговор от AI
В PyTest параметърът scope определя областта на живота (жизнения цикъл) на фикстурата — тоест, колко дълго тя ще бъде създавана и използвана в тестовете.
Основните стойности на scope са:
- function (по подразбиране): фикстурата се създава отново за всеки тест.
- class: фикстурата се създава веднъж за всеки клас с тестове.
- module: фикстурата се създава веднъж за всеки модул (файл с тестове).
- package: фикстурата се създава веднъж за всеки пакет.
- session: фикстурата се създава веднъж за цялата сесия на тестовете.
Например, ако фикстурата има scope="module", тя се инициализира веднъж преди изпълнението на всички тестове в модула и се унищожава след тях. Това помага за спестяване на време и ресурси, особено ако фикстурата създава, например, връзка към база данни или сървър.
Пример за фикстура с scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
По този начин, scope влияе върху производителността и изолацията на тестовете, като позволява контрол върху колко често се създават и унищожават ресурсите.