Skip to content

HTMLTestRunner.py has a bug #20

@onesbyones

Description

@onesbyones

@tungwaiyip

  • HTMLTestRunner for Version 0.8.3 has a Bug, follow code:

    TestResult = unittest.TestResult
    
    class _TestResult(TestResult):
        # note: _TestResult is a pure representation of results.
        # It lacks the output and reporting ability compares to unittest._TextTestResult.
    
        def __init__(self, verbosity=1):
            TestResult.__init__(self)
            '''this line start'''
            self.outputBuffer = StringIO.StringIO()
            '''this line end'''
            self.stdout0 = None
            self.stderr0 = None
            self.success_count = 0
            self.failure_count = 0
            self.error_count = 0
            self.verbosity = verbosity
    
            # result is a list of result in 4 tuple
            # (
            #   result code (0: success; 1: fail; 2: error),
            #   TestCase object,
            #   Test output (byte string),
            #   stack trace,
            # )
            self.result = []
            
        def startTest(self, test):
            TestResult.startTest(self, test)
            # just one buffer for both stdout and stderr
            stdout_redirector.fp = self.outputBuffer
            stderr_redirector.fp = self.outputBuffer
            self.stdout0 = sys.stdout
            self.stderr0 = sys.stderr
            sys.stdout = stdout_redirector
            sys.stderr = stderr_redirector

    this block code will create a report.html after testsuite end, but in the report.html's popup_window will rewrite outputbuffer. example:

image

  • Modify this bug, follow me

    move code self.outputBuffer = StringIO.StringIO() to

        def startTest(self, test):
            TestResult.startTest(self, test)
            # just one buffer for both stdout and stderr
            '''after modify start'''
            self.outputBuffer = StringIO.StringIO()
            '''after modify end'''
            stdout_redirector.fp = self.outputBuffer
            stderr_redirector.fp = self.outputBuffer
            self.stdout0 = sys.stdout
            self.stderr0 = sys.stderr
            sys.stdout = stdout_redirector
            sys.stderr = stderr_redirector

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions