我如何 运行 使用 PyCharm 进行文档测试?

How do I run doctests with PyCharm?

在 PyCharm IDE 中,如果我用 doctest 右键单击​​ function/method,有时右键菜单会给我以下选项:“运行 'Doctest my_function_name'" 有时右键单击菜单只会提供 运行 整个文件的选项(不是作为 doctest)。

什么决定什么时候会给出 "run doctest" 选项,什么时候不会?有没有办法强制执行此操作?

运行PyCharm 中的模块(或其中的测试)是通过 Run Configuration 完成的。当您右键单击一个模块时,PyCharm 会搜索该模块的现有 Run Configuration。如果找到配置(这可能是由于先前的 运行,或手动创建 Configuration),PyCharm 只会向 运行 建议该配置。

例如,如果 module.py 的配置被创建为 运行 其 doctests,这就是我们在右键单击 module.py 时会看到的选项。但是,如果没有找到配置,PyCharm建议在不同的选项中运行模块,具体取决于模块中的代码(运行定期,或运行doctests / unittests).选择一个选项后,PyCharm 会隐式创建相应的临时 Run Configuration。从这里开始,当右键单击该模块时,您将只会获得为该模块创建的配置。

重要旁注: PyCharm 最多保存 6 个临时文件(即 Configurations 通过 运行 模块创建) Run Configurations- "Python" 中的 3 个,即脚本,以及 "Python Tests" 中的 3 个。这意味着如果你 运行 moduleA.pymoduleB.pymoduleC.py,然后 moduleD.py,PyCharm 中的临时 Configurations 将为 moduleB.pymoduleC.pymoduleD.pymoduleA.py的配置会自动删除,除非明确保存。

此行为可以重现如下:

  1. PyCharm中创建一个新的Python模块:"temp"

2.Add 模块的以下内容:

"""
    >>> print 3.14
    3.14
"""

if __name__ == '__main__':
    pass
  1. 右键单击 doctest 部分可以选择 "Run 'Doctests in temp' "
  2. 右键单击 main 部分可以选择 "Run 'temp' "
  3. 选择任何一个选项,都会使另一个选项在随后的 运行 中消失。例如,选择 运行 模块将使 运行 Doctests 的选项在随后的 运行 中消失s,反之亦然。 返回到可以在两个选项之间进行选择的第一阶段,可以通过删除模块的 "Run configuration":

运行 --> 编辑配置 --> 找到模块的当前配置(通常突出显示) --> 单击 "Minus" 按钮(左上角) --> 单击 "Apply" --> 单击确定。 现在我们回到第 3 步。

(转载于 PyCharm 5.0 和 4.5)

总结一下:

  • 如果没有找到 Run Configuration,PyCharm 以任何可能的方式(作为脚本、文档测试或单元测试)建议 运行 模块
  • 如果找到 Run Configuration,PyCharm 仅表示 Configuration
  • 如果 PyCharm 没有给你你想要的 运行 选项,找到阻止它给你那个选项的 Run Configuration 删除它,或创建一个新文件,它将 运行 文件,或 method/function,以你想要的方式。

如果不想删除配置,也可以按运行的快捷键 |恢复程序(对我来说是 F9)弹出一个完整的选择列表

如果以上适合你 - 确保你的模块不是命名为doctest;它会引起冲突,因此导致异常。