The Python unittest module seems to assume a directory structure for a project in which there's a project root level directory with the source code and tests under that directory.
I would like, however, to write Python scripts in my ~/bin directory and tests for it in another directory (say, ~/dev/tests). Is there a way for me to run the unit tests using the command line interface without setting my PYTHONPATH environment variable and creating __init__.py files and whatnot?
Here's a simple example demonstrating what I want:
~/bin/candy:
#!/usr/bin/env python
def candy():
    return "candy"
if __name__ == '__main__':
    print candy()
~/dev/tests/test_candy.py:
#!/usr/bin/env python
import unittest
import candy
class CandyTestCase(unittest.TestCase):
    def testCandy(self):
        candyOutput = candy.candy()
        assert candyOutput == "candy"
I notice that everything can be done conveniently if:
- The two files are named with py extensions (candy.pyandtest_candy.py)
- The two files are in the same directory
- The test is run with the following in the directory of the tests: $ python -m unittest test_candy
Can I run python with the unittest module to do the following without setting anything in my environment explicitly:
- My file under test does not have the py extension (just ~/candy).
- I don't care if test_candyhas py as an extension or not.
- I want candyandtest_candy.pyto not share a common root (other than my home directory).
If that's not possible with a simple invocation of python -m unittest, what is the most simple way to accomplish this?
 
     
     
     
    