assertEquals vs. assertEqual in python

前端 未结 4 1503
难免孤独
难免孤独 2020-12-23 08:25

Is there a difference between assertEquals and assertEqual in the python unittest.TestCase?

And if there is not, why are there

相关标签:
4条回答
  • 2020-12-23 08:45

    Good question!

    Actually, in Python 2.6, both assertEqual and assertEquals are convenience aliases to failUnlessEqual. The source declares them thus:

     # Synonyms for assertion methods
     assertEqual = assertEquals = failUnlessEqual
    

    In Python 3, to your point, failUnlessEqual is explicitly deprecated. assertEquals carries this comment :-)

    # Synonyms for assertion methods

    # The plurals are undocumented. Keep them that way to discourage use.

    # Do not add more. Do not remove.

    # Going through a deprecation cycle on these would annoy many people.

    So, the upshot appears to be that you should use whatever you like for Python 2.x, but tend toward assertEqual for Python 3.

    0 讨论(0)
  • 2020-12-23 08:59

    A 3.3 update: From 26.3.7.1.1. Deprecated aliases :

    For historical reasons, some of the TestCase methods had one or more aliases that are now deprecated. The following table lists the correct names along with their deprecated aliases:

    Method Name   | Deprecated alias | Deprecated alias
    --------------+------------------+-----------------
    assertEqual() | failUnlessEqual  | assertEquals
    ...
    
    0 讨论(0)
  • 2020-12-23 09:05

    Not just for Python 3.x, since Python 2.7 assertEquals has been deprecated as well:

    Method Name            | Deprecated alias(es)
    _________________________________________________________
    assertEqual()          | failUnlessEqual, assertEquals
    

    From 25.3.7.1.1. Deprecated aliases

    0 讨论(0)
  • 2020-12-23 09:11

    I think this was tension between the "only one obvious way to do it" vs. "alias to make the overall code flow semantically". Personally I found I like to read

    failIf(some_condition)
    

    over

    assertFalse(some_condition)
    

    but liked

    assertEqual(a, b)
    

    over the other two (assertEquals(a, b) bothers my sense of grammar).

    The "only one obvious way to do it" has taken precedence going forward.

    0 讨论(0)
提交回复
热议问题