problem including tests in unittest

Peter Otten __peter__ at web.de
Thu Oct 12 20:58:33 CEST 2006


Chris Fonnesbeck wrote:

> I have a module for which I am trying to code a unit test. However,
> when I run unittest.main(), I get:
> 
> In [1]: import PyMC
> 
> In [2]: PyMC.unittest.main()
> 
> ----------------------------------------------------------------------
> Ran 0 tests in 0.000s
> 
> OK
> 
> 
> This is confusing, because I have set up a class called MCMCTest that
> is a sublcass of unttest.TestCase, which in turn contains a test
> method. Yet, unittest seems not to be aware of it. Is there anything I
> am forgetting?

By default unittest.main() scans the __main__ module for TestCases.
Though you could use it from an interactive interpreter

>>> import unittest
>>> unittest.main("PyMC", argv=["yadda", "-v"])
test_alpha (PyMC.Test) ... ok
test_beta (PyMC.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
$ # Oops

without countermeasures unittest.main() will exit that too after completion.
The normal usage (the only one I know) is to put it inside the test script:

# your testcases
if __name__ == "__main__":
   unittest.main()

and run that from the shell:

$ python PyMC.py -v
test_alpha (__main__.Test) ... ok
test_beta (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK

Peter



More information about the Python-list mailing list