嵌套包的自动测试

时间:2015-02-09 20:28:29

标签: unit-testing python-3.x packages

我为这个愚蠢的问题感到抱歉,但过去两个小时我一直在撞墙。

我想使用相对导入,我的项目结构如下所示:

auto_testing
+ tests
  + __init__.py
  + my_module.py
+ src
  + __init__.py
  + my_module.py
+ __init__.py

tests/my_module.py的内容是:

import unittest

from src.my_module import MyClass

class TestMyClass(unittest.TestCase):
    def setUp(self):
        self.inst = MyClass()

    def test_division_by_zero(self):
        self.assertRaises(ZeroDivisionError, self.inst.divide, 1, 0)

def run_tests():
    unittest.main()

if __name__ == '__main__':
    run_tests()

然后我在终端

中运行命令
cd auto_testing
python3 -m tests.my_module

并获取Error while finding spec for 'tests.my_module.py' (<class 'AttributeError'>: 'module' object has no attribute '__path__')

当我跑步时

cd auto_testing
python3
import tests.my_module
tests.my_module.run_tests()

我得到Ran 0 tests(为什么没有找到任何测试应该是另一个问题,但关键是,MyClass已正确导入并且unittest.main()似乎已被调用;请使用{{进行检查1}})。

我应该去睡觉吗?我错过了很简单的事情吗?

1 个答案:

答案 0 :(得分:0)

我应该去睡觉。

我需要运行的命令是:

cd auto_testing
python3 -m unittest tests/my_module.py

这也是我的测试。