当测试文件位于不同的模块中时,Python无法找到测试

问题描述 投票:1回答:2

我有一个像下面的目录结构

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
python python-2.7 python-unittest
2个回答
0
投票

你在__init__.py需要一个tests/。 Unittest的发现仅适用于包装。 https://docs.python.org/3/library/unittest.html


0
投票

试试这个,在你的开头添加这些代码:

import sys
sys.path.append('.../common')

或者你可以使用附加的绝对路径。

© www.soinside.com 2019 - 2024. All rights reserved.