在 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.py
、moduleB.py
、moduleC.py
,然后运行 moduleD.py
,PyCharm 中的临时 Configurations
将是 moduleB.py
、moduleC.py
和 moduleD.py
。 moduleA.py
的配置会被自动删除,除非显式保存。
这种行为可以重现如下:
- 在
PyCharm
中,新建一个Python模块:“temp”
2.在模块中添加以下内容:
"""
>>> print 3.14
3.14
"""
if __name__ == '__main__':
pass
- 右键单击 doctest 部分可以选择“Run 'Doctests in temp'”
- 右键单击main部分,可以选择“Run 'temp'”
- 选择任何一个选项都会使另一个选项在后续运行中消失。例如,选择 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/