design by contract versus doctest

Yermat loic at fejoz.net
Tue Apr 6 03:00:02 EDT 2004


Peter Hansen wrote:
> aku wrote:
> 
>> A nr of unittests will
>> still be necessary to ensure preconditions, but in
>> the (oversimplified) example I gave (n = 1), the test
>> "if n < 0: ..." isn't necessary anymore and certainly not *in*
>> the called function itself.
>>
>> The "downside" with DBC I see is: when the caller *cannot*
>> ensure a precondition, then the behavior in the called
>> function becomes unpredictable. 
> 
> 
> I agree that that appears to be a downside.  Furthermore,
> if you have to verify in calling code that preconditions
> are met, don't you end up with duplication outside of the
> function that would otherwise have the check in it?
> 
> Well written code will have less duplication, not more,
> so I'm still unclear how moving the check out of the
> function (from your original example from doctest)
> will actually improve things...
> 
> And if the code that checks this is in the function,
> then a single unit test can verify that the check is
> in place and working properly.  It sounds like moving
> the check out of that function will lead to more
> tests and/or more checks in other places, neither of
> which is a good idea.
> 
> But I'm certainly no expert in (or proponent of) DBC...
> 
> -Peter

see http://www.python.org/doc/essays/metaclasses/Eiffel.py
to now how to do (at least one way to) design by contract in Python.

Yermat




More information about the Python-list mailing list