Pytest динамически параметризует тест, основанный на значении из прибора - PullRequest
0 голосов
/ 02 марта 2020

Мне нужно параметризовать мой тест со значениями диапазона a, которые возвращаются из вычисленных на основе других приборов.

, например:

@pytest.fixture
def another_fixture():
    return value

@pytest.fixture
def expensive_op(another_fixture):
    return value * another_fixture

@pytest.mark.parametrize('idx', range(expensive_op))
def test_justwork(expensive_op, idx)
    pass

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

  1. Это уродливо и нарушает схему прибора
  2. Операция с приборами довольно дорогая, я не хочу сделать это дважды (мне все еще нужно это во время теста)

Есть ли вообще, даже "hacki sh", чтобы добиться этого? Я видел способы ввода осветителей с помощью globals (), но, похоже, это не сработало, если осветитель - тот, кто его вводит (к тому времени уже слишком поздно).

...