On Tue, 23 Nov 2010 11:36:05 +0100, Ulrich Eckhardt wrote:
> tests/ > foo.py # defines TestFoo1 and TestFoo2 > bar.py # defines TestBar1 and TestBar2 > > What I would like to do now is this: > > from tests import * > unittest.main() > > In other words, import all test files and run them. This does import > them, but it turns out that I end up with modules foo and bar, and the > unittests inside those are not found. Given the directory structure you show, I find that hard to believe. You should get an ImportError, as there is no module or package called "tests". But suppose you turn tests into a proper package: tests/ __init__.py foo.py bar.py You could have __init__.py include these lines: from foo import * from bar import * Then later, when you do this: from tests import * it will pick up everything from foo and bar, and unittest.main() should run those tests as well. I think. Or you could just do: for module in (foo, bar): try: unittest.main(module) except SystemExit: pass > PS: I've been trying a few things here, and stumbled across another > thing that could provide a solution. I can "from tests import *", but > then all these modules will pollute my namespace. I can "import tests", > but then neither of the submodules will be in "tests". I tried "import > tests.*", but that doesn't work. Is there no way to import a whole > package but with its namespace? The package needs to know what submodules to make available. Put inside __init__.py: import foo import bar and then from outside the package, do this: import tests Now tests.foo and tests.bar will exist. -- Steven -- http://mail.python.org/mailman/listinfo/python-list