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.py
andtest_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_candy
has py as an extension or not. - I want
candy
andtest_candy.py
to 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?
Aucun commentaire:
Enregistrer un commentaire