Python 当测试文件位于不同模块时无法找到测试
Python not able to find tests when test files are in different module
我的目录结构如下
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
有人可以告诉我我做错了什么吗?如何从不同的测试包进行测试 运行?
- Python - 2.7
您需要 __init__.py
tests/
。 Unittest 的发现只适用于包。
https://docs.python.org/3/library/unittest.html
试试这个,在你的开头添加这些代码:
import sys
sys.path.append('.../common')
或者你可以在追加中使用绝对路径
我的目录结构如下
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
有人可以告诉我我做错了什么吗?如何从不同的测试包进行测试 运行?
- Python - 2.7
您需要 __init__.py
tests/
。 Unittest 的发现只适用于包。
https://docs.python.org/3/library/unittest.html
试试这个,在你的开头添加这些代码:
import sys
sys.path.append('.../common')
或者你可以在追加中使用绝对路径