2013-06-13 5 views
6

В Python (3.3.2) doctest, эллипсис (...) может соответствовать любой строке. Таким образом, для кода нижеКак включить эллипсис при вызове python doctest

def foo(): 
    """ 
    >>> foo() 
    hello ... 
    """ 
    print("hello world") 

При запуске doctest он не должен вызывать никаких ошибок. Но

$ python -m doctest foo.py 
********************************************************************** 
File "./foo.py", line 3, in foo.foo 
Failed example: 
    foo() 
Expected: 
    hello ... 
Got: 
    hello world 
********************************************************************** 
1 items had failures: 
    1 of 1 in foo.foo 
***Test Failed*** 1 failures. 

Что я должен сделать, чтобы включить эллипс? Насколько я могу судить, он отключен по умолчанию.

Я знаю, что добавьте # doctest: +ELLIPSIS, как в приведенном ниже коде, разрешите его, но мне нравится включать эллипсис для всех тестов.

def foo(): 
    """ 
    >>> foo() # doctest: +ELLIPSIS 
    hello ... 
    """ 
    print("hello world") 

ответ

10

Вы можете передать в optionflags методу testmod, но это требует, чтобы запустить сам модуль вместо doctest модуля:

def foo(): 
    """ 
    >>> foo() 
    hello ... 
    """ 
    print("hello world") 

if __name__ == "__main__": 
    import doctest 
    doctest.testmod(verbose=True, optionflags=doctest.ELLIPSIS) 

Выход:

$ python foo.py 
Trying: 
    foo() 
Expecting: 
    hello ... 
ok 
1 items had no tests: 
    __main__ 
1 items passed all tests: 
    1 tests in __main__.foo 
1 tests in 2 items. 
1 passed and 0 failed. 
Test passed. 
Смежные вопросы