【问题标题】:How do I run doctests with PyCharm?如何使用 PyCharm 运行文档测试?
【发布时间】:2015-05-28 05:57:46
【问题描述】:

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

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

【问题讨论】:

  • 我还没有找到答案,但似乎文件中的某些导入是导致问题出现的原因。所以我有时可以避免重组事物的问题,以便将我正在测试的功能移动到另一个模块。无论如何,将事物拆分成不同的模块通常会产生更清晰、更可重用的代码,因此这不是一个可怕的解决方法……但是,如果 PyCharm 能够始终如一地工作,那就更好了。希望 jetbrains 最终能解决这个问题。
  • 在相关的说明中,我昨天升级到 PyCharm 4.5,到目前为止还没有再看到这个问题。但是这才2天,所以这并不意味着问题就解决了。但我充满希望:)
  • 嗯.. 我目前正在使用 PyCharm 4.5,但仍然发现问题 :( 感谢您提供有关重组 btw 的提示,我会尝试的。
  • 不确定是什么原因导致它提供该选项,但您可以通过转到运行>编辑配置...>单击绿色 +>Python 测试>Doctests>输入您的脚本来强制它运行 doctest
  • 我的印象是导入sqlite3后出现问题

标签: python intellij-idea pycharm doctest


【解决方案1】:

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

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

重要的旁注: PyCharm 在“Python”中最多保存 6 个临时(即通过运行模块创建的 ConfigurationsRun Configurations- 3,即脚本和 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 部分提供“运行 'temp'”选项
  3. 选择任何一个选项都会使另一个选项在后续运行中消失。例如,选择 run 模块将使运行 Doctests 的选项在后续运行中消失,反之亦然。 回到第一阶段,可以在两个选项之间进行选择,可以通过删除模块的“运行配置”来实现:

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

(转载于PyCharm5.0和4.5)

总结一下:

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

【讨论】:

    【解决方案2】:

    如果不想删除配置,也可以直接点击快捷键运行| Resume Program (F9 for me) 弹出一个完整的选项列表

    【讨论】:

    • 谢谢。 PyCharm 是一个很棒的工具,但它们确实以非直观的方式隐藏了很多功能。
    • 非常感谢!似乎主菜单选项Run – Run …Run – Debug … 是获得所有可能的运行方式的规范方式。为什么右键单击上下文菜单没有这两个选项我无法理解。
    【解决方案3】:

    如果上述对你有用 - 确保你的模块命名为doctest;它会导致冲突,从而导致异常。

    【讨论】:

      猜你喜欢
      • 2014-01-15
      • 1970-01-01
      • 2020-01-28
      • 2018-06-06
      • 2015-12-02
      • 2011-09-17
      • 1970-01-01
      • 2015-01-31
      相关资源
      最近更新 更多