我有一个像下面的目录结构
horizontalupgrade
common/
__init__.py
upgradestate.py
tests/
common/
__init__.py
testupgradestate.py
testupgradestate.py
的内容
import unittest
from upgradestate import UpgradeState
class UpgradeStateTest(unittest.TestCase):
def setUp(self):
print "Setup Called"
def test_copy(self):
u = UpgradeState("")
print "test_copy Called"
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(UpgradeStateTest)
runner = unittest.TextTestRunner()
runner.run(suite)
但是在尝试执行测试时,python无法找到测试
(venv) dmanna-a01:horizontalupgrade dmanna$ python -m unittest discover -v
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
但是,如果我使我的目录结构如下所示
horizontalupgrade
common/
__init__.py
upgradestate.py
testupgradestate.py
然后测试运行正常
(venv) dmanna-a01:horizontalupgrade dmanna$ python -m unittest discover -v
test_copy (common.testupgradestate.UpgradeStateTest) ... Setup Called
test_copy Called
ok
----------------------------------------------------------------------
Ran 1 tests in 0.000s
OK
有人能让我知道我做错了什么吗?如何从不同的测试包中运行测试?
你在__init__.py
需要一个tests/
。 Unittest的发现仅适用于包装。 https://docs.python.org/3/library/unittest.html
试试这个,在你的开头添加这些代码:
import sys
sys.path.append('.../common')
或者你可以使用附加的绝对路径。