Какие бывают параметры scope в fixture в pytest
Python
Middle
Без компании
Какие бывают параметры scope в fixture в pytest
Ответы
В pytest фикстуры могут иметь разные области видимости (scope), которые определяют, как часто фикстура будет создаваться и уничтожаться:
- `function` (по умолчанию) - фикстура создается и уничтожается для каждой тестовой функции
- `class` - фикстура создается один раз для всего класса тестов
- `module` - фикстура создается один раз для модуля (файла)
- `package` - фикстура создается один раз для пакета (директории)
- `session` - фикстура создается один раз для всей сессии тестирования
Пример:
```
import pytest
@pytest.fixture(scope='module')
def db_connection():
conn = create_db_connection() # создается один раз для модуля
yield conn
conn.close() # закрывается после всех тестов модуля
def test_query1(db_connection):
assert db_connection.execute("SELECT 1") == 1
def test_query2(db_connection):
assert db_connection.execute("SELECT 2") == 2
```
Выбор scope влияет на производительность тестов - чем шире scope, тем меньше накладных расходов, но нужно учитывать, что состояние фикстуры будет сохраняться между тестами.