Command Palette

Search for a command to run...

Hectal
Back to the lesson: Topic 11.5 — unittest and doctest
Python · Example 3 of 4

doctest: reading a failure report

The second example in shout expects 'OK' but the function returns 'OK!'. The code hides the temporary folder name so the report looks the same on every computer.

unittest is the testing framework built into Python: tests are methods of a TestCase class with setUp and assertEqual-style checks. doctest runs the examples written inside docstrings, so documentation that shows >>> sessions stays true.

Change the code and press Run (Ctrl+Enter). Predict what will happen first, then break it on purpose and read what changes. Your edits are saved and match the lesson page.

Ready for more? This phase has 6 hands-on exercises with automatic checks.

Practice questions

Write the code in the editor, run it, then open the model answer to compare.

01

Write a TestCase for a function is_even(n) with three tests, and run it in the browser with a TextTestRunner writing to a hidden stream. Print result.testsRun and result.wasSuccessful().

02

Write a function initials(name) with a docstring containing two doctest examples, put it in a module file and run doctest.testmod.

03

Use subTest to check is_even for several numbers in one test method.

Explain it without notes

01

How do you write a unittest test, and what do setUp and tearDown do?

02

What is the difference between a failure and an error in unittest?

03

How does doctest work, and where does it fall short?

04

How would you move a legacy unittest suite to pytest?

05

What do the +ELLIPSIS and +NORMALIZE_WHITESPACE directives do?

doctest: reading a failure report
Sign in to run this example in your browser.

Expected output

**********************************************************************
File "mathbits.py", line 18, in mathbits.shout
Failed example:
    shout("ok")
Expected:
    'OK'
Got:
    'OK!'
**********************************************************************
1 item had failures:
   1 of   2 in mathbits.shout
***Test Failed*** 1 failure.
TestResults(failed=1, attempted=4)