Дайте светильникам Pytest разные области применения для разных тестов - PullRequest
0 голосов
/ 12 декабря 2018

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

@pytest.fixture
def get_random_person():
    return random.choice(list_of_people)

и 2 параметризованных теста, один, который хочет использовать одного и того же человека для каждого условия теста, и один, который хочет нового человека каждый раз.Есть ли способ для этого прибора иметь область видимости = "сессия" для одного теста и область видимости = "функция" для другого?

1 Ответ

0 голосов
/ 14 августа 2019

Один из способов сделать это, чтобы отделить реализацию, а затем вернуть ее 2 различными приборами.Так что-то вроде:

def _random_person():
    return random.choice(list_of_people)

@pytest.fixture(scope='function')
def get_random_person_function_scope():
    return _random_person()

@pytest.fixture(scope='session')
def get_random_person_session_scope():
    return _random_person()
...