How do you do unittest?

Will Stuyvesant hwlgw at hotmail.com
Fri Aug 1 10:33:38 EDT 2003


I have a unittest testfile like this:

----------------------- test_mod.py ---------------------
import sys
sys.path.append('..')
import unittest
import mod

class Test_rmlutils(unittest.TestCase):

    def testNormalCase(self):
        self.assertEqual(....


if __name__ == '__main__':
    unittest.main()
---------------------------------------------------------

It is exactly the same as example 17-2 in "Python in a
Nutshell" (PiaN), except for the first two lines.  To
quote PiaN:
"...name the test module...with a prefix such as 'test_',
and put it in a subdirectory named 'test' of the directory
where you keep the sources."

PiaN did not mention the ugly sys.path.append('..') trick
I had to use when following its advice.  I need to use it
because mod.py is in the directory above the 'test'
directory.

To run a test from the source directory I have to change
to the 'test' directory and run test_mod.py there from the
commandline.  Okay, I can do that from a batchfile:

----------------------- test.bat ------------------------
cd test
test_mod.py
cd ..
---------------------------------------------------------

But: I would like to get rid of the need for
sys.append('..') and I don't see a nice way to do that, do
you?  Maybe something from a Python script instead of a
DOS script...I am thinking about importing sys there and
then doing some advanced unittest function like
'runsuite(blah, foo)' but I am still reading the unittest
docs and there must be somebody who did this before?

I guess the author of PiaN does not use a 'test' subdirectory 
himself, as it is now the example 17-2 does only work in the 
source directory.




More information about the Python-list mailing list