Limitations of doctest

The biggest limitation of doctest is that it only compares printed output. This means that any output that could be variable will lead to test failures. The following is an example:

>>> exchange
{'GOOG': <stock_alerter.stock.Stock object at 0x00000000031F8550>, 'AAPL': <stock_alerter.stock.Stock object at 0x00000000031F8588>}

This doctest has the potential to fail for two reasons:

  • The order in which a dictionary object is printed out is not guaranteed by Python, which means it could be printed out in the opposite order, sometimes leading to failure
  • The Stock object might be at a different address each time, so that part will fail to match the next time the test is run

The solution to the first problem is to ensure that the output ...

Get Test-Driven Python Development now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.