Проверить, что функция выдает предупреждение с помощью тестов на нос

Я пишу модульные тесты, используя перенос , и я хотел бы проверить, вызывает ли функция предупреждение (функция использует warnings.warn. ). Это легко сделать?

7
задан astrofrog 27 August 2010 в 19:13
поделиться

1 ответ

def your_code():
    # ...
    warnings.warn("deprecated", DeprecationWarning)
    # ...

def your_test():
    with warnings.catch_warnings(record=True) as w:
        your_code()
        assert len(w) > 1

Вместо того, чтобы просто проверять длину, вы, конечно, можете проверить ее более подробно:

assert str(w.args[0]) == "deprecated"

В python 2.7 или новее сделайте это с последней проверкой как:

assert str(w[0].message[0]) == "deprecated"

9
ответ дан 7 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: