Нужно понять, как `yield` работает для` pytest`? - PullRequest
0 голосов
/ 28 октября 2019

Я использую pytest для тестирования приложения Python (3.7), но я обнаружил, что он не запускает метод с yield в конце.

Ниже приведен мой метод python:

def load(conn):
   print('Hello world')
   if conn.connected:
       yield True

Ниже приведен тестовый пример:

def test_load():
    load(None)

при запуске тестового примера с pytest метод load() не вызывается событием. Результаты теста показывают pass. Как я могу понять, как yeild работает с pytest?

1 Ответ

0 голосов
/ 28 октября 2019

yield превращает функцию в генератор , поэтому вызов load() возвращает объект генератора без фактического выполнения его содержимого.

Вы можете увидеть, что он вернет, если запустите pytest с флагом -s, который не позволяет захватить вывод print (pytest -s [file]):

def test_load():
    print(load(None))

Чтобы действительно запустить генератор, вы можете использовать next(), чтобы получить следующий элемент, произведенный генератором:

def test_load():
    next(load(None))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...