In Python (3.3.2) doctest, ellipsis (...
) can match any string. So, for the code below
def foo(): """ >>> foo() hello ... """ print("hello world")
when running doctest it shouldn't raise any error. But
$ 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.
What I must do to enable the ellipis? As far as I can tell it is disable by default.
I know that add # doctest: +ELLIPSIS
, as in the code below, solve it, but I like to enable ellipsis for all tests.
def foo(): """ >>> foo() # doctest: +ELLIPSIS hello ... """ print("hello world")
Right click on a blank space in the python code, and there is a menu option to run all the Doctests found in the file, not just the tests for one function.
When the tests include values that are likely to change in unpredictable ways, and where the actual value is not important to the test results, you can use the ELLIPSIS option to tell doctest to ignore portions of the verification value.
You can pass in optionflags
to the testmod
method, but this requires you to run the module itself instead of the doctest
module:
def foo(): """ >>> foo() hello ... """ print("hello world") if __name__ == "__main__": import doctest doctest.testmod(verbose=True, optionflags=doctest.ELLIPSIS)
Output:
$ 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With