Вызов функции, которая получается из прибора Pytest - PullRequest
0 голосов
/ 05 февраля 2019

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

import pytest


def fixture_helper():
    print("Initialized from the helper...")
    yield 26
    print("Tearing down after the helper...")


@pytest.fixture
def my_fixture_with_helper():
    return fixture_helper()


@pytest.fixture
def my_fixture():
    print("Initialized from the fixture...")
    yield 26
    print("Tearing down after the fixture...")


def test_nohelper(my_fixture):
    pass


def test_helper(my_fixture_with_helper):
    pass

Однако, если я запускаю pytest --capture=no, я получаю следующее

test_foo.py Initialized from the fixture...
.Tearing down after the fixture...
.

Я ожидаю" Инициализированоот помощника "и" Сносить помощника ", чтобы распечатать, но это не так, и я не могу понять, почему.Почему это не работает?

1 Ответ

0 голосов
/ 05 февраля 2019

Вам нужно использовать yield from, чтобы правильно пропустить генератор.В противном случае будет возвращен объект генератора, который не распознается pytest как генератор.

@pytest.fixture
def my_fixture_with_helper():
    yield from fixture_helper()

Более подробную информацию о yield from можно найти на в этом сообщении stackoverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...