unit testing failure makes no sense

L

listservs

I have some unit testing code in one of my modules that appears to
run without an error, but the unit test fails anyhow. Have a look at
the output below -- the TestResult seems to have no errors and no
failures, yet I get a system exit.

------------------------------------------------------------------------
---
exceptions.SystemExit Traceback (most
recent call last)

/Users/chris/<ipython console>

/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/
unittest.py in __init__(self=<unittest.TestProgram object at
0x10ee670>, module='__main__', defaultTest=None, argv=['/usr/local/
bin/ipython'], testRunner=None, testLoader=<unittest.TestLoader
object at 0x606290>)
757 self.progName = os.path.basename(argv[0])
758 self.parseArgs(argv)
--> 759 self.runTests()
self.runTests = <bound method TestProgram.runTests of
<unittest.TestProgram object at 0x10ee670>>
760
761 def usageExit(self, msg=None):

/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/
unittest.py in runTests(self=<unittest.TestProgram object at 0x10ee670>)
795 self.testRunner = TextTestRunner
(verbosity=self.verbosity)
796 result = self.testRunner.run(self.test)
--> 797 sys.exit(not result.wasSuccessful())
global sys.exit = <built-in function exit>
result.wasSuccessful = <bound method
_TextTestResult.wasSuccessful of <unittest._TextTestResult run=3
errors=0 failures=0>>
798
799 main = TestProgram

SystemExit: False
Type exit or quit to exit IPython (%Exit or %Quit do so
unconditionally).

Any ideas what is going wrong here? Here is my testing code:

class MCMCTest(unittest.TestCase):

def testCoalMiningDisasters(self):
"""Run coal mining disasters example sampler"""

print 'Running coal mining disasters test case ...'

# Create an instance of the sampler
self.sampler = DisasterSampler()

# Specify the nimber of iterations to execute
iterations = 10000
thin = 2
burn = 5000
chains = 2

# Run MCMC simulation
for i in range(chains):

self.failUnless(self.sampler.sample(iterations,
burn=burn, thin=thin, plot=True))

# Run convergence diagnostics
self.sampler.convergence()

# Plot autocorrelation
self.sampler.autocorrelation()

# Goodness of fit
x, n = self.sampler.goodness(iterations/10)['overall']
self.failIf(x/n < 0.05 or x/n > 0.95)
 
P

Peter Otten

I have some unit testing code in one of my modules that appears to
run without an error, but the unit test fails anyhow. Have a look at
the output below -- the TestResult seems to have no errors and no
failures, yet I get a system exit.

sys.exit(0) is just a normal way to exit a program, and it is implemented as
'raise SystemExit'. You seem to be running your test from within ipython
which probably catches SystemExit exceptions to prevent you from losing
state. Try running your test from the shell and all should be OK.

Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,810
Latest member
Kassie0918

Latest Threads

Top