代码之家  ›  专栏  ›  技术社区  ›  tuk

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

  •  1
  • tuk  · 技术社区  · 6 年前

    我有一个目录结构如下

    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版
    2 回复  |  直到 6 年前
        1
  •  0
  •   Battery_Al    6 年前

    你需要一个 __init__.py 在里面 tests/ https://docs.python.org/3/library/unittest.html

        2
  •  0
  •   iPrince    6 年前

    试试这个,在你的开头加上以下代码:

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

    或者可以在append中使用绝对路径。