2013-06-13 31 views
6

W języku Python (3.3.2) doctest, ellipsis (...) może dopasować dowolny ciąg. Tak więc dla kodu poniżejW jaki sposób włączyć elipsę podczas wywoływania pythonu doctest

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

podczas uruchamiania doctest nie powinien powodować żadnych błędów. Ale

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

Co muszę zrobić, aby włączyć elipsę? O ile mogę powiedzieć, jest domyślnie wyłączona.

Wiem, że dodać # doctest: +ELLIPSIS, jak w poniższym kodzie, rozwiązać, ale lubię włączyć ellipsis dla wszystkich testów.

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

Odpowiedz

10

można przekazać w optionflags metody testmod, ale to wymaga, aby uruchomić moduł sam zamiast modułu doctest:

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

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

wyjściowa:

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