3KWA wrote: > > Peter Otten wrote: > >> You cannot test for an unknown value, but you can do some sanity >> checks: >> >> >>> rate = get_rate('AUDEUR') >> >>> rate > 0 >> True >> >>> isinstance(rate, float) >> True >> >> This will at least make sure that get_rate() does not throw an >> exception. > > Thanks a lot ... sanity checks ... it makes a lot of sense to me! > > At EuroPython I attended a talk where someone said that untested code > is nothing ... so I am trying to write something instead of nothing > ... on the other hand can code ever be over tested? > Yes, code can be over tested: tests require maintenance just like any other code, so you should avoid having tests which just duplicate other tests and don't add any value. e.g. If you know the rate code works for a few currencies it probably also works for most others, so you don't need to exhaustively test all possible currency pairs.
For your unknown value, I would choose a range which you might expect to hold true for a reasonable period of time and check the value is inside that range. If the currencies shift massively you might need to update the test, but with luck that won't happen: >>> 0.4 <= get_rate('AUDEUR') <= 0.8 That way if your code starts accidentally returning EURAUD you should catch it in the test, but minor shifts shouldn't matter. -- http://mail.python.org/mailman/listinfo/python-list