Можете ли вы проверить, что возникает исключение с помощью doctest в Python?

Можно ли написать модульный тест doctest, который будет проверять возникновение исключения?
Например, если у меня есть функция, foo(x) которая должна вызывать исключение, если x<0, как мне написать для этого doctest?

Ответов (3)

Решение

да. Ты можешь это сделать. Doctest модуль документации и Википедии есть пример этого.

   >>> x
   Traceback (most recent call last):
     ...
   NameError: name 'x' is not defined
>>> import math
>>> math.log(-2)
Traceback (most recent call last):
 ...
ValueError: math domain error

флаг многоточия # doctest: + ELLIPSIS не требуется для использования ... в Traceback doctest

>>> scope # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
NameError: name 'scope' is not defined

Не знаю, почему в предыдущих ответах нет IGNORE_EXCEPTION_DETAIL. Мне нужно это для работы. Версия: 3.7.3.