[Python-Dev] the role of assert in the standard library ?
Robert Kern
robert.kern at gmail.com
Thu Apr 28 23:08:51 CEST 2011
On 4/28/11 3:27 PM, Holger Krekel wrote:
> On Thu, Apr 28, 2011 at 6:59 PM, Guido van Rossum<guido at python.org> wrote:
>> On Thu, Apr 28, 2011 at 12:54 AM, Tarek Ziadé<ziade.tarek at gmail.com> wrote:
>>> In my opinion assert should be avoided completely anywhere else than
>>> in the tests. If this is a wrong statement, please let me know why :)
>>
>> I would turn that around. The assert statement should not be used in
>> unit tests; unit tests should use self.assertXyzzy() always.
>
> FWIW this is only true for the unittest module/pkg policy for writing and
> organising tests. There are other popular test frameworks like nose and pytest
> which promote using plain asserts within writing unit tests and also allow to
> write tests in functions. And judging from my tutorials and others places many
> people appreciate the ease of using asserts as compared to learning tons
> of new methods. YMMV.
>
> Holger
>
>> regular code, assert should be about detecting buggy code. It should
>> not be used to test for error conditions in input data. (Both these
>> can be summarized as "if you still want the test to happen with -O,
>> don't use assert.)
Regardless of whether those frameworks encourage it, it's still the wrong thing
to do for the reason that Guido states. Some bugs only show up under -O, so you
ought to be running your test suite under -O, too.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-Dev
mailing list