【问题标题】:How to have PyCharm see a doctest specified by a `__doc__` assignment如何让 PyC​​harm 查看由 `__doc__` 分配指定的 doctest
【发布时间】:2021-03-04 15:23:25
【问题描述】:

考虑以下包含 doctests 的文档。

def f(x):
   """
   Increments by one.
   >>> f(2)
   3
   """
   return x + 1

PyCharm 的测试运行程序 (as seen here) 选择了 doctest。

但是 PyCharm 并没有将以下内容视为 doctest(尽管例如 pytest --doctest-modules -v 可以看到)。

f = lambda x: x + 1
f.__doc__ = """
Increments by one.
>>> f(2)
3
"""

【问题讨论】:

  • 我感觉到XY problem
  • 愚蠢的尝试:尝试将手动分配的文档字符串的内容缩进一级(也许还有关闭的三引号行)。我不知道 PyCharm 通常会做什么来查找测试,但是在模块级文档字符串之外,可以假定内容是缩进的,并且它用于查找/解析测试文档字符串的功能可能与测试有问题不是完全缩进。哎呀,在the answer to the question you linked 中,该示例甚至还缩进了模块级文档字符串,这让我很怀疑。
  • 是的,@ShadowRanger;这似乎奏效了。您为什么不将其作为答案,以便我可以将其分配为答案?

标签: python pycharm doctest


【解决方案1】:

Per comments,看起来 PyCharm 期望所有测试至少缩进一个级别(即使在 cases where it's the module level docstring 中,根本不需要缩进,它似乎依赖于该级别的缩进)。这不是常规文档测试的要求(python3 -mdoctest -v modulename.py 工作得很好),但 PyCharm 一定很难。

您手动分配的文档字符串没有缩进,因此 PyCharm 似乎忽略了它。将其更改为:

f = lambda x: x + 1
f.__doc__ = """
    Increments by one.
    >>> f(2)
    3
    """

让字符串包含一层缩进似乎足以让 PyC​​harm 加入。

【讨论】:

    猜你喜欢
    • 2015-01-22
    • 2021-01-29
    • 2015-12-16
    • 2013-09-26
    • 2016-11-09
    • 2020-01-27
    • 2016-09-17
    • 2019-03-20
    • 2020-07-31
    相关资源
    最近更新 更多