[Python-Dev] the role of assert in the standard library ? (original) (raw)

Raymond Hettinger raymond.hettinger at gmail.com
Fri Apr 29 00:31:46 CEST 2011


On Apr 28, 2011, at 3:07 PM, Guido van Rossum wrote:

On Thu, Apr 28, 2011 at 2:53 PM, Raymond Hettinger <raymond.hettinger at gmail.com> wrote:

On Apr 28, 2011, at 1: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. I've also observed that people appreciate using asserts with nose.py and py.test. They must not appreciate -O. :-)

It might be nice if there were a pragma or module variable to selectively enable asserts for a given test module so that -O would turn-off asserts in the production code but leave them on in a test_suite.

Raymond



More information about the Python-Dev mailing list