python - 如何使用 PyCharm 运行文档测试?

标签 python intellij-idea pycharm doctest

在 PyCharm IDE 中,如果我右键单击带有 doctest 的函数/方法,有时右键菜单会给我选项:“Run 'Doctest my_function_name'”,有时相反,右键菜单只提供运行整个文件的选项(不是作为 doctest)。

什么决定什么时候会给出“run doctest”选项,什么时候不会?有没有办法以一种或另一种方式强制它?

最佳答案

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

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

重要的旁注: PyCharm 最多保存 6 个临时(即通过运行模块创建的 Configurations)Run Configurations- 3在“Python”中,即脚本,和 3 在“Python 测试”中。这意味着如果您运行 moduleA.pymoduleB.pymoduleC.py,然后运行 ​​moduleD.py,PyCharm 中的临时 Configurations 将是 moduleB.pymoduleC.pymoduleD.pymoduleA.py的配置会被自动删除,除非显式保存。

这种行为可以重现如下:

  1. PyCharm中,新建一个Python模块:“temp”

2.在模块中添加以下内容:

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

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

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

(在 PyCharm 5.0 和 4.5 中重现)

总结一下:

  • 如果未找到 Run Configuration,PyCharm 建议以任何可能的方式运行模块(作为脚本、文档测试或单元测试)
  • 如果找到 Run Configuration,PyCharm 只会建议 Configuration
  • 如果 PyCharm 没有为您提供所需的运行选项,请找到阻止它为您提供该选项的 Run Configuration删除它,或者创建一个新的,它将按照您想要的方式运行文件或方法/函数。

关于python - 如何使用 PyCharm 运行文档测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240835/

相关文章:

python - 在python中随机排除0

python - 自定义样式 Pandas 数据框

intellij-idea - 如何在 IntelliJ 中制作特殊的实时模板?

python - 为什么 pycharm 无法识别我的 pytest 测试并显示测试输出?

python - 使用 lxml 替换 HTML 标签并保留其内容

java - 在空接口(interface)上“删除中间人”IntelliJ 重构

java - 本地开发设置

python-3.x - 无效的 base64 编码字符串 : number of data characters (217) cannot be 1 more than a multiple of 4

ubuntu - PyCharm 没有对/usr/share/pycharm 的写入权限。请由特权用户运行它以更新

python - 将单词合并成一行