toy*_*toy 6 python unit-testing
我有一个关于Python和unittest的基本问题.
我有这样的目录结构.
Project
|
|-lib
|
|-__init__.py
|-class.py
|
|-tests
|
|-__init__.py
|-test_class.py
Run Code Online (Sandbox Code Playgroud)
现在这是我的test_class.py的内容.如果我从根文件夹导入lib.class它工作正常.但是,如果我从其他地方导入文件,它就无法正常工作.
import unittest
from lib.class import Class
class TestClass(unittest.TestCase):
def testClass(self):
// do some test
def main():
unittest.main()
if __name__ == '__main__':
main()
当我运行测试时,我收到了这个错误
Traceback (most recent call last):
File "tests/test_class.py", line 2, in
from lib.class import Class
ImportError: No module named lib.class
不确定如何从另一个不是根文件夹的文件夹导入文件.
我不认为这是处理这个问题的最有效或最安全的方法,但这就是我在我的库中添加库的方法unittesting.
import unittest, os, sys
sys.path.append(os.path.abspath('..'))
from lib.class import Class
Run Code Online (Sandbox Code Playgroud)
这实际上将前一个文件夹添加到可访问资源列表中,然后使用它来包含父文件夹lib.
或者你可能会做类似的事情import .. from lib.class.请查看此处了解有关相关进口的更多信息.
小智 5
修改sys.path以包含项目目录
import sys
sys.path.append('/path/to/Project')
Run Code Online (Sandbox Code Playgroud)
在 Linux 上,你可以这样做
import sys, os
sys.path.append(os.path.abspath(sys.path[0]) + '/../')
Run Code Online (Sandbox Code Playgroud)
并且应该包括正在运行的 Python 测试脚本之上的目录,即 Project 文件夹