2016-12-16 10 views
1

Поддерживает ли doctest, что оба выхода и исключение смешиваются вместе?Doctest не работает, когда нормальный выход и исключение смешиваются вместе?

Одним из примеров является:

>>> def foo(): 
... print 'hello world!' 
>>> foo() 
hello world! 
>>> def bar(): 
...  raise Exception() 
>>> bar() 
Traceback (most recent call last): 
    ... 
Exception 

>>> def foo_bar(): 
...  foo() 
...  bar() 
>>> foo_bar() 
hello world! 
Traceback (most recent call last): 
    ... 
Exception 

Я ожидаю, что во всех трех случаях должны быть успешными, но только два из них делает, см

$ python -m doctest -v /tmp/1.py 
Trying: 
    def foo(): 
     print 'hello world!' 
Expecting nothing 
ok 
Trying: 
    foo() 
Expecting: 
    hello world! 
ok 
Trying: 
    def bar(): 
     raise Exception() 
Expecting nothing 
ok 
Trying: 
    bar() 
Expecting: 
    Traceback (most recent call last): 
     ... 
    Exception 
ok 
Trying: 
    def foo_bar(): 
     foo() 
     bar() 
Expecting nothing 
ok 
Trying: 
    foo_bar() 
Expecting: 
    hello world! 
    Traceback (most recent call last): 
     ... 
    Exception 
********************************************************************** 
File "/tmp/1.py", line 16, in 1 
Failed example: 
    foo_bar() 
Exception raised: 
    Traceback (most recent call last): 
     File "/usr/lib/python2.7/doctest.py", line 1315, in __run 
     compileflags, 1) in test.globs 
     File "<doctest 1[5]>", line 1, in <module> 
     foo_bar() 
     File "<doctest 1[4]>", line 3, in foo_bar 
     bar() 
     File "<doctest 1[2]>", line 2, in bar 
     raise Exception() 
    Exception 
********************************************************************** 
1 items had failures: 
    1 of 6 in 1 
6 tests in 1 items. 
5 passed and 1 failed. 
***Test Failed*** 1 failures. 

ответ

1

docs говорят, что вы не можете сделать это:

Примеры, содержащие ожидаемый выход и исключение, не поддерживаются. Попытка угадать, где заканчивается, а другая начинается, слишком подвержена ошибкам, и это также приводит к запутанному тесту.