[Python-Dev] unittest's redundant assertions: asserts vs. failIf/Unlesses

Guido van Rossum guido at python.org
Tue Apr 8 02:37:54 CEST 2008

On Wed, Mar 19, 2008 at 5:16 PM, Jeffrey Yasskin <jyasskin at gmail.com> wrote:
> On Wed, Mar 19, 2008 at 2:15 PM,  <glyph at divmod.com> wrote:
>  >
>  >  On 02:21 pm, murman at gmail.com wrote:
>  >  >>OTOH, I'd rather there be OOWTDI so whatever the consensus is is fine
>  >  >>with me.
>  >  >
>  >  >This strikes me as a gratuitous API change of the kind Guido was
>  >  >warning about in his recent post: "Don't change your APIs incompatibly
>  >  >when porting to Py3k"
>  >
>  >  I agree emphatically.  Actually I think this is the most extreme case.
>  >  The unit test stuff should be as stable as humanly possible between 2
>  >  and 3, moreso than any other library.
>  This is convincing for me. Move my +1 back to 3.1.

Same here; let's tread carefully here and not change this with 3.0.
Starting to deprecate in 3.1 and killing in 3.3 would be soon enough.
I like using only the assertKeyword variants, removing assert_, fail*,
and assertEquals. However I don't like changing assertTrue and
assertFalse to insist that the value is exactly True or False -- if
you really care that much, let's add assertIs(x, y) which asserts that
x and y are the same object. I also think that all tests should use
the operator their name implies, e.g. assertEqual(x, y) should do
something like

  if x == y:
    raise AssertionError(...)

rather than

  if x != y:
    raise AssertionError(...)

Someone please open a bug for this task.

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-Dev mailing list