2017-01-12 6 views
0

Как уловить sys.exit() с помощью pytest в функции, которая возвращает генератор? В следующем коде f() возвращает привет мир если x = True. Но используя x = False, я ожидаю, что код будет запущен SystemExit.catch sys.exit с py.test

def test_generator(): 
    with pytest.raises (SystemExit) as excinfo: 
     def f(x = True): 
      if x: 
       yield 'hello world' 
      sys.exit('Test') 
     f (x = False) 
    assert 'Test' == excinfo.value 

py.test жалуется, что исключение не было поднято. Если я изменю yield на return, код работает без проблем. Есть идеи?

+0

Вы пытались исправить 'sys' с' mock.patch'? –

ответ

1

Простое вызов функции генератора не выполняет ЛЮБОЙ код внутри него - это происходит только при повторении итерации возвращаемого генератора. Попробуйте list(f(x=False)), или, возможно, f(x=False).next().

 Смежные вопросы

  • Нет связанных вопросов^_^