Can you check that an exception is thrown with doctest in Python?

Is it possible to write a doctest unit test that will check that an exception is raised?
For example, if I have a function foo(x) that is supposed to raise an exception if x < 0, how would I write the doctest for that?

17084 次浏览

Yes. You can do it. The doctest module documentation and Wikipedia has an example of it.

   >>> 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

ellipsis flag # doctest: +ELLIPSIS is not required to use ... in Traceback doctest

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

Don't know why the previous answers don't have the IGNORE_EXCEPTION_DETAIL. I need this for it to work. Py versioin: 3.7.3.