我有一个像这样的目录结构:
|-root
|-app
program.py
tests.txt
|-tests
runTests.py
我的tests.txt文件包含我的program.py代码上的所有doctests。它叫
from program import *
然后它会进行所有doctest调用。 我的runTests.py文件包含以下代码:
import doctest
doctest.testfile("app/tests.txt")
在命令行中,我然后调用:
python runTests.py
它确实找到了tests.txt文件并成功读取它但它找不到模块" program"我试图导入。我究竟做错了什么?我怎样才能将它们放在不同的目录中并仍能运行测试?
由于
答案 0 :(得分:3)
有两种方法可以做到这一点:
您可以在sys.path
runTests.py
中添加import sys; sys.path.append('app')
环境变量PYTHONPATH
可以实现同样的效果。
您可以通过在__init__.py
中添加文件from app.program import *
并导入tests.txt
将文件夹转换为包。
提醒:doctest
的主要前提是方法/函数文档(当您查看__doc__
属性时获得的内容)解释了和给出的内容例子(测试)。
如果您将测试移出,那么您将从代码用户那里获取主要信息来源。我想如果您在源代码之外有大量文档或者您有许多其他测试(您希望为用户提供一些示例,而不是所有500个单元测试将代码覆盖率提高到100%),这可能是有意义的。
那就是说,要解决这个问题,你需要让导入工作。文件夹app
不会神奇地出现在模块的搜索路径中。你必须告诉Python这实际上是一个应该看的地方。