Testing the doctest extension ============================= Simple doctest blocks --------------------- >>> 1+1 2 >>> 1/0 Traceback (most recent call last): ... ZeroDivisionError: integer division or modulo by zero Special directives ------------------ * doctest .. doctest:: >>> 1+1 2 >>> 1/0 Traceback (most recent call last): ... ZeroDivisionError: integer division or modulo by zero * testcode/testoutput .. testcode:: print(1+1) .. testoutput:: 2 .. testcode:: 1/0 .. testoutput:: Traceback (most recent call last): ... ZeroDivisionError: integer division or modulo by zero * testsetup .. testsetup:: * def squared(x): return x * x .. doctest:: >>> squared(2) 4 .. testcode:: print(squared(2)) .. testoutput:: 4 >>> squared(2) 4 * options for doctest/testcode/testoutput blocks .. testcode:: :hide: print('Output text.') .. testoutput:: :hide: :options: +NORMALIZE_WHITESPACE Output text. .. doctest:: :pyversion: >= 2.0 >>> a = 3 >>> a 3 .. doctest:: :pyversion: < 2.0 >>> a = 3 >>> a 4 * grouping .. testsetup:: group1 def add(x, y): return x + y ``add`` is now known in "group1", but not in others. .. doctest:: group1 >>> add(1, 1) 2 .. doctest:: group2 >>> add(1, 1) Traceback (most recent call last): ... NameError: name 'add' is not defined Interleaving testcode/testoutput: .. testcode:: group1 print(squared(3)) .. testcode:: group2 print(squared(4)) .. testoutput:: group1 9 .. testoutput:: group2 16 .. testcleanup:: * from tests.test_extensions import test_ext_doctest test_ext_doctest.cleanup_call() non-ASCII result ---------------- >>> print('umlauts: äöü.') umlauts: äöü. >>> print('Japanese: 日本語') Japanese: 日本語 keep control char in raw string ------------------------------- .. doctest:: >>> print('one\ntwo') one two >>> print(r'one\ntwo') one\ntwo