我如何 运行 使用 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.py
、moduleB.py
、moduleC.py
,然后 moduleD.py
,PyCharm 中的临时 Configurations
将为 moduleB.py
、moduleC.py
和 moduleD.py
。 moduleA.py
的配置会自动删除,除非明确保存。
此行为可以重现如下:
- 在
PyCharm
中创建一个新的Python模块:"temp"
2.Add 模块的以下内容:
"""
>>> print 3.14
3.14
"""
if __name__ == '__main__':
pass
- 右键单击 doctest 部分可以选择 "Run 'Doctests in temp' "
- 右键单击 main 部分可以选择 "Run 'temp' "
- 选择任何一个选项,都会使另一个选项在随后的 运行 中消失。例如,选择 运行 模块将使 运行 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
;它会引起冲突,因此导致异常。
在 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.py
、moduleB.py
、moduleC.py
,然后 moduleD.py
,PyCharm 中的临时 Configurations
将为 moduleB.py
、moduleC.py
和 moduleD.py
。 moduleA.py
的配置会自动删除,除非明确保存。
此行为可以重现如下:
- 在
PyCharm
中创建一个新的Python模块:"temp"
2.Add 模块的以下内容:
"""
>>> print 3.14
3.14
"""
if __name__ == '__main__':
pass
- 右键单击 doctest 部分可以选择 "Run 'Doctests in temp' "
- 右键单击 main 部分可以选择 "Run 'temp' "
- 选择任何一个选项,都会使另一个选项在随后的 运行 中消失。例如,选择 运行 模块将使 运行 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
;它会引起冲突,因此导致异常。