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)
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)