如何使用PyCharm运行doctests?

Tro*_*roy 22 python doctest intellij-idea pycharm

在PyCharm IDE中,如果我右键单击带有doctest的函数/方法,有时右键单击菜单会给我选项:" 运行'Doctest my_function_name' ",有时右键单击菜单只会给出运行整个文件的选项(不作为doctest).

什么时候它会给出"运行doctest"选项以及何时不会?有没有办法以某种方式强迫它?

ash*_*bar 12

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

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

重要的注意事项: PyCharm最多可以保存6个临时(即Configurations通过运行模块创建)Run Configurations- "Python"中的3个,即脚本,以及"Python测试"中的3个.这意味着,如果你运行moduleA.py,moduleB.py,moduleC.py,然后moduleD.py,临时Configurations在PyCharm会moduleB.py,moduleC.pymoduleD.py.moduleA.py除非明确保存,否则将自动删除配置.

此行为可以重现如下:

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

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

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

if __name__ == '__main__':
    pass
Run Code Online (Sandbox Code Playgroud)
  1. 右键单击doctest部分,可以选择"在temp中运行'Doctests'"
  2. 右键单击主要部分,可以选择"运行'temp'"
  3. 选择任何选项,使另一个选项在后续运行中消失.例如,选择运行模块将使后续运行中运行Doctests的选项消失,反之亦然.回到第一阶段,可以通过删除模块的"运行配置"来选择两个选项:

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

(转载于PyCharm5.0和4.5)

总结一下:

  • 如果没有Run Configuration找到,PyCharm建议以任何可能的方式运行模块(作为脚本,doctests或unittests)
  • 如果Run Configuration找到a,PyCharm只会暗示Configuration.
  • 如果PyCharm没有给你你想要的运行选项,找到Run Configuration阻止它给你那个选项并删除它的那个,或者创建一个新的,以你想要的方式运行文件或方法/函数.


dug*_*oon 6

如果您不想删除配置,还可以点击Run |的快捷键 恢复程序(我的F9)弹出一个完整的选择列表