You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python doctest中检查以省略号开头的输出并修复报错?

嘿,我来帮你捋捋这个doctest报错的问题!虽然你没贴具体的错误信息,但我可以给你列几个最容易踩的坑和排查步骤,你可以挨个核对:

1. 先盯紧doctest的输出匹配精度

doctest对输出的匹配是出了名的严格——多一个空格、少一个点、甚至换行符不对都会触发报错。你要确认:

  • 你在doctest里写的预期输出......silence......和方法实际输出的内容完全一致,包括标点、大小写、有没有额外的空格或换行。
  • 如果你的方法是用print()输出内容,那print()默认会在末尾加一个换行符,这时候doctest里的预期要对应上(比如不要在预期里多写换行,也不要漏了实际输出的换行)。
2. 明确方法的输出/返回逻辑

这是很多人踩坑的点,你得先搞清楚你的方法是直接打印内容,还是返回这个字符串:

  • 如果是打印输出(用print()):doctest捕获的是标准输出,所以测试用例要写打印出来的内容,比如:
    >>> your_activity_check_method()
    ......silence......
    
  • 如果是返回字符串:那doctest里要写带引号的返回值(Python默认用单引号显示字符串),比如:
    >>> your_activity_check_method()
    '......silence......'
    
3. 检查doctest的运行姿势

有时候不是测试用例的问题,是运行方式不对:

  • 如果你用python -m doctest your_script.py运行,要确保你的方法是可直接调用的——比如不要把方法藏在if __name__ == "__main__"块里(当然如果测试用例也在这个块里也能跑,但最好把测试文档字符串直接写在方法定义里)。
  • 确认你在测试用例里的方法调用是对的,比如方法需要参数的话,有没有漏传?
4. 看报错信息找线索

如果上面的都排查完还是有问题,把具体的报错信息贴出来会更高效!比如常见的报错会像这样:

Failed example:
    your_activity_check_method()
Expected:
    ......silence......
Got:
    

这种情况说明方法根本没输出任何内容;如果Got是别的字符串,那就是实际输出和预期不匹配,对着改就行。

举个正确的例子参考:
如果你的方法是打印无活动状态:

def check_activity():
    """
    Checks for active operations, outputs silence if none.
    
    >>> check_activity()
    ......silence......
    """
    print("......silence......")

运行python -m doctest your_script.py就能通过测试。

内容的提问来源于stack exchange,提问作者Sam Chats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:37:25