import sys
import unittest
import nose.result
from nose.config import Config
from nose.exc import DeprecatedTest, SkipTest
from nose.result import start_capture, end_capture
class TestResult(unittest.TestCase):
class T(unittest.TestCase):
def runTest(self):
pass
def setUp(self):
self.buf = []
class dummy:
pass
stream = dummy()
stream.write = self.buf.append
stream.writeln = self.buf.append
self.tr = nose.result.TextTestResult(stream, None, 2, Config())
# def tearDown(self):
# nose.result.end_capture()
def test_capture(self):
start_capture()
try:
print "Hello"
self.assertEqual(sys.stdout.getvalue(), "Hello\n")
finally:
end_capture()
def test_init(self):
tr = self.tr
self.assertEqual(tr.errors, [])
self.assertEqual(tr.failures, [])
self.assertEqual(tr.deprecated, [])
self.assertEqual(tr.skip, [])
self.assertEqual(tr.testsRun, 0)
self.assertEqual(tr.shouldStop, 0)
def test_add_error(self):
buf, tr = self.buf, self.tr
try:
raise Exception("oh no!")
except:
err = sys.exc_info()
test = self.T()
tr.addError(test, err)
self.assertEqual(tr.errors[0],
(test, tr._exc_info_to_string(err, test), ''))
self.assertEqual(buf, [ 'ERROR' ])
# test with capture
start_capture()
try:
tr.capture = True
print "some output"
tr.addError(test, err)
self.assertEqual(tr.errors[1],
(test, tr._exc_info_to_string(err, test),
'some output\n'))
self.assertEqual(buf, [ 'ERROR', 'ERROR' ])
finally:
end_capture()
# test deprecated
try:
raise DeprecatedTest("deprecated")
except:
err = sys.exc_info()
tr.addError(test, err)
self.assertEqual(len(tr.errors), 2)
self.assertEqual(tr.deprecated, [ (test, '', '') ])
# test skip
try:
raise SkipTest("skip")
except:
err = sys.exc_info()
tr.addError(test, err)
self.assertEqual(len(tr.errors), 2)
self.assertEqual(tr.skip, [ (test, '', '') ])
self.assertEqual(buf, ['ERROR', 'ERROR', 'DEPRECATED', 'SKIP'])
def test_add_failure(self):
buf, tr = self.buf, self.tr
try:
assert False, "test add fail"
except:
err = sys.exc_info()
test = self.T()
tr.addFailure(test, err)
self.assertEqual(tr.failures[0],
(test, tr._exc_info_to_string(err, test), ''))
self.assertEqual(buf, [ 'FAIL' ])
# test with capture
start_capture()
try:
tr.capture = True
print "some output"
tr.addFailure(test, err)
self.assertEqual(tr.failures[1],
(test, tr._exc_info_to_string(err, test),
'some output\n'))
self.assertEqual(buf, [ 'FAIL', 'FAIL' ])
finally:
end_capture()
def test_start_stop(self):
tr = self.tr
test = self.T()
tr.startTest(test)
tr.stopTest(test)
def test_stop_on_error(self):
buf, tr = self.buf, self.tr
tr.conf.stopOnError = True
try:
raise Exception("oh no!")
except:
err = sys.exc_info()
test = self.T()
tr.addError(test, err)
assert tr.shouldStop
def test_stop_on_error_skip(self):
buf, tr = self.buf, self.tr
tr.conf.stopOnError = True
try:
raise SkipTest("oh no!")
except:
err = sys.exc_info()
test = self.T()
tr.addError(test, err)
assert not tr.shouldStop
def test_stop_on_error_deprecated(self):
buf, tr = self.buf, self.tr
tr.conf.stopOnError = True
try:
raise DeprecatedTest("oh no!")
except:
err = sys.exc_info()
test = self.T()
tr.addError(test, err)
assert not tr.shouldStop
def test_stop_on_error_fail(self):
buf, tr = self.buf, self.tr
tr.conf.stopOnError = True
try:
assert False, "test add fail"
except:
err = sys.exc_info()
test = self.T()
tr.addFailure(test, err)
assert tr.shouldStop
if __name__ == '__main__':
unittest.main()
syntax highlighted by Code2HTML, v. 0.9.1