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 is deterministic. For example, the following approach will work:
>>> for key in sorted(exchange.keys()): ... print(key, exchange[key]) ... AAPL <stock_alerter.stock.Stock object at 0x00000000031F8550> GOOG...