Skip to content

unexpected successes are not output #67004

Closed

Description

@rbtcollins
BPO 22815
Nosy @rbtcollins, @ezio-melotti, @voidspace, @serhiy-storchaka, @iritkatriel
PRs
  • bpo-22815: Print unexpected successes in summary in TextTestResult #30138
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/serhiy-storchaka'
    closed_at = <Date 2021-12-26.11:23:43.418>
    created_at = <Date 2014-11-07.10:21:48.117>
    labels = ['type-feature', 'library', '3.11']
    title = 'unexpected successes are not output'
    updated_at = <Date 2021-12-26.11:23:43.418>
    user = 'https://github.com/rbtcollins'

    bugs.python.org fields:

    activity = <Date 2021-12-26.11:23:43.418>
    actor = 'serhiy.storchaka'
    assignee = 'serhiy.storchaka'
    closed = True
    closed_date = <Date 2021-12-26.11:23:43.418>
    closer = 'serhiy.storchaka'
    components = ['Library (Lib)']
    creation = <Date 2014-11-07.10:21:48.117>
    creator = 'rbcollins'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 22815
    keywords = ['patch']
    message_count = 11.0
    messages = ['230783', '407833', '407834', '408679', '408681', '408683', '408685', '408689', '408690', '408693', '409190']
    nosy_count = 5.0
    nosy_names = ['rbcollins', 'ezio.melotti', 'michael.foord', 'serhiy.storchaka', 'iritkatriel']
    pr_nums = ['30138']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue22815'
    versions = ['Python 3.11']

    Activity

    1. rbtcollins commented on Nov 7, 2014

      @rbtcollins
      MemberAuthor

      Unexpected successes cause failures, but we don't output details about them at the end of the run.

      From https://code.google.com/p/unittest-ext/issues/detail?id=22

      A complicating factor is that we don't have a backtrace to show - but we may have captured stdout/stderr or in future various test attachments to show.

    2. added
      type-bugAn unexpected behavior, bug, or error
      stdlibStandard Library Python modules in the Lib/ directory
      on Nov 7, 2014
    3. iritkatriel commented on Dec 6, 2021

      @iritkatriel
      Member

      I think this has been fixed:

      % cat mm.py
      import unittest

      class TestStringMethods(unittest.TestCase):
      
          @unittest.expectedFailure
          def test_upper(self):
              self.assertEqual(2, 2)
      
      if __name__ == '__main__':
          unittest.main()

      % ./python.exe mm.py
      x
      ----------------------------------------------------------------------
      Ran 1 test in 0.001s

      OK (expected failures=1)
      iritkatriel@Irits-MBP cpython % vi mm.py
      iritkatriel@Irits-MBP cpython % ./python.exe mm.py
      u
      ----------------------------------------------------------------------
      Ran 1 test in 0.000s

      FAILED (unexpected successes=1)

    4. iritkatriel commented on Dec 6, 2021

      @iritkatriel
      Member

      Or do you mean that there should be more output?

    5. iritkatriel commented on Dec 16, 2021

      @iritkatriel
      Member

      In verbose mode we do get output like the one in the code.google issue:

      % cat tmp.py

      import unittest
      
      class TestStringMethods(unittest.TestCase):
      
          @unittest.expectedFailure
          def test_upper(self):
              self.assertEqual(2, 2)
      
          def test_lower(self):
              return
      
      if __name__ == '__main__':
          unittest.main()

      % ./python.exe -m tmp -v
      test_lower (main.TestStringMethods) ... ok
      test_upper (main.TestStringMethods) ... unexpected success

    6. iritkatriel commented on Dec 16, 2021

      @iritkatriel
      Member

      I don't think adding more information from the test would be helpful - when a test fails you have (and need) information about what happened. But when a test succeeds the code of the test basically tells you what happened - all the assertions passed.

      I think we can close this.

    7. serhiy-storchaka commented on Dec 16, 2021

      @serhiy-storchaka
      Member

      I think the OP means that test details (test description, traceback, captured output) are printed for ERROR and FAIL in TextTestResult.printErrors(). Other possible results besides error and failure are success, skipped, expected failure and unexpected success. Success, skipped and expected failure are expected, they do not cause total failure, but unexpected success is different. Result.wasSuccessful() returns False if there are any errors, failures or unexpected successes. But unlike errors and failures we do not have any details about unexpected successes. It looks like oversight to me.

      Yes, there are no traceback for unexpected success, but at least we can output the test description and captured output.

    8. serhiy-storchaka commented on Dec 16, 2021

      @serhiy-storchaka
      Member

      There are no other details for unexpected successes, only test descriptions.

    9. added
      type-featureA feature request or enhancement
      and removed
      type-bugAn unexpected behavior, bug, or error
      on Dec 16, 2021
    10. iritkatriel commented on Dec 16, 2021

      @iritkatriel
      Member

      Yes, this is why I don’t understand the request here. When a test fails you know which assertion was violated or which line raised an exception. When a multi line test succeeds, you don’t know which line was supposed to fail.

    11. iritkatriel commented on Dec 16, 2021

      @iritkatriel
      Member

      I know that in unittest2 an unexpected success did not cause the test to fail (when we moved from unittest2 to unittest at work we got test failures due to unexpected successes that previously did not show up). I don't know the whole history of how unittest2 came to be, I think it was a clone of an older copy of unittest? Maybe that it the background for this issue?

    12. serhiy-storchaka commented on Dec 16, 2021

      @serhiy-storchaka
      Member

      Unless you tun tests in verbose mode you do not know which of tests was unexpectedly successful. And even in the verbose mode it is not easy to find that test in long output.

      Yes, unexpected successes considered successes in earlier versions. See bpo-20165.

      You can find many interesting when read git logs.

    13. serhiy-storchaka commented on Dec 26, 2021

      @serhiy-storchaka
      Member

      New changeset 1944434 by Serhiy Storchaka in branch 'main':
      bpo-22815: Print unexpected successes in summary in TextTestResult (GH-30138)
      1944434

    14. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Labels

    3.11only security fixesstdlibStandard Library Python modules in the Lib/ directorytype-featureA feature request or enhancement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions