python doctest来自一个单独的文件+位置

时间:2015-02-26 13:20:20

标签: python doctest

我有一个像这样的目录结构:

|-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"我试图导入。我究竟做错了什么?我怎样才能将它们放在不同的目录中并仍能运行测试?

由于

1 个答案:

答案 0 :(得分:3)

有两种方法可以做到这一点:

  1. 您可以在sys.path runTests.py中添加import sys; sys.path.append('app') 环境变量PYTHONPATH可以实现同样的效果。

  2. 您可以通过在__init__.py中添加文件from app.program import *并导入tests.txt将文件夹转换为包。

  3. 提醒:doctest的主要前提是方法/函数文档(当您查看__doc__属性时获得的内容)解释了给出的内容例子(测试)。

    然后,Doctest会找到这样的代码并执行它,确保文档中的示例实际工作。

    如果您将测试移出,那么您将从代码用户那里获取主要信息来源。我想如果您在源代码之外有大量文档或者您有许多其他测试(您希望为用户提供一些示例,而不是所有500个单元测试将代码覆盖率提高到100%),这可能是有意义的。

    那就是说,要解决这个问题,你需要让导入工作。文件夹app不会神奇地出现在模块的搜索路径中。你必须告诉Python这实际上是一个应该看的地方。