How do you do unittest?

Michele Simionato mis6 at pitt.edu
Fri Aug 1 18:59:30 CEST 2003


hwlgw at hotmail.com (Will Stuyvesant) wrote in message news:<cb035744.0308010633.3fd4e805 at posting.google.com>...
> 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.

It is interesting that I had a similar issue with doctest, and I
was forced to add 

>>> import sys; sys.path.append('.')

to my tests. Quite ugly and at the end I wrote a script that did this
automatically. I would be curious to know what's the origin of this
path issue.

                Michele




More information about the Python-list mailing list