Кэширование параметризованных вложенных фикстур в pytestPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Кэширование параметризованных вложенных фикстур в pytest

Сообщение Anonymous »

Я пытаюсь понять, как и когда кэшируются возвращаемые значения из приборов pytest. Насколько я понимаю, цель фикстур (в частности, фикстур в области сеанса) состоит в том, чтобы они вызывались только один раз и чтобы возвращаемые значения кэшировались для будущих вызовов. Похоже, что это не относится к вложенным параметризованным приборам.
Проблему демонстрирует следующий код:

Код: Выделить всё

from collections import Counter

import pytest

state = Counter()

@pytest.fixture(scope="session", autouse=True)
def setup_session():
yield None
print(state)

@pytest.fixture(scope="session", params=["A1", "A2", "A3"])
def first(request):
state[request.param] += 1
return request.param

@pytest.fixture(scope="session", params=["B1", "B2"])
def second(first, request):
return first + request.param

@pytest.fixture(scope="session", params=["C1", "C2"])
def third(second, request):
return second + request.param

def test_length(third):
assert len(third) == 6
Вывод — Counter({'A1': 3, 'A2': 2, 'A3': 1}). Итак, first вызывается три раза для значения параметра A1, два раза для A2 и один раз для A3. Почему?
Я ожидаю получить Counter({'A1': 1, 'A2': 1, 'A3': 1}) - один вызов для каждого параметра значение.
В случае, если это актуально, я использую Python 3.12.3, pytest-8.3.4
PS: все 12 тестов пройдены — это хорошо.
PPS: при удалении одного уровня вложенности проблема исчезает, и сначала вызывается ровно один раз для каждого значения параметра.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-pytest
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Кэширование параметризованных вложенных фикстур в pytest
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как запустить определенную функцию в конце конкретного теста сценария в pytest BDD с использованием фикстур
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как автоматически добавлять декораторы иерархии Allure для параметризованных методов в pytest?
    Anonymous » » в форуме Python
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous
  • Переопределить имя параметризованных функций Pytest
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • @pytest.mark.skip против @pytest.mark.xfail в Pytest
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»