У меня следующая структура каталогов:
.
├── README.md
├── src
│ ├── __init__.py
│ └── foo.py
└── test
├── __init__.py
└── runner.py
└── test_foo.py
Где тестовые файлы выглядят так:
test_foo.py
import unittest
from ..src.foo import *
class TestFoo(unittest.TestCase):
def setUp(self):
pass
def test_foo(self):
foo = Foo()
res = foo.get_something('bar')
if res is None:
self.fail('something bad happened')
if __name__ == '__main__':
unittest.main(self)
runner.py
import unittest
# import test modules
import test_foo
# initialize the test suite
loader = unittest.TestLoader()
suite = unittest.TestSuite()
# add tests to the test suite
suite.addTests(loader.loadTestsFromModule(test_foo))
# initialize a runner, pass it your suite and run it
runner = unittest.TextTestRunner(verbosity=3)
result = runner.run(suite)
Я хотел бы запустить все свои тесты из родительского каталога в тестовом наборе, поэтому я пытаюсь вызвать юниты следующим образом:
python -m test/runner.py
Но он жалуется на следующее:
$ python -m test/runner.py
/usr/bin/python: Import by filename is not supported.
если я перейду в тестовый каталог, я получу другую ошибку:
$ python -m runner
File "test_foo.py", line 2, in <module>
from ..src.foo import *
ValueError: Attempted relative import in non-package
Я хотел бы сохранить все связанные с тестами материалы в каталоге parent / test, если это возможно.
Есть идеи, что я здесь не так делаю?
Спасибо!