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

如何通过Django的load_tests()钩子设置doctest测试选项?

我刚好也碰到过这两个痛点,通过Django的load_tests()钩子完全可以搞定,给你一步步拆解:

核心解决方案:自定义load_tests()函数

在你目标Django应用的tests.py文件里,添加下面这段代码,就能同时启用你要的两个选项:

import doctest
from django.test import TestLoader

def load_tests(loader, tests, pattern):
    # 配置doctest的选项:启用ELLIPSIS + 首次失败即停止
    doctest_options = doctest.ELLIPSIS | doctest.REPORT_ONLY_FIRST_FAILURE
    
    # 扫描指定文件中的doctest(可以按需调整扫描范围)
    doctest_suite = TestLoader().discover(
        '.',
        pattern='*.py',  # 比如只扫utils.py就改成'utils.py',缩小扫描范围
        loader_class=doctest.DocTestLoader,
        options=doctest_options,
    )
    
    # 将doctest测试套件合并到Django的测试集合中
    tests.addTests(doctest_suite)
    return tests

选项对应说明

  • doctest.REPORT_ONLY_FIRST_FAILURE:这就是你要的-x参数的等价配置,测试遇到第一个失败就会立刻停止,不用再跑后续用例,帮你快速定位首个问题。
  • doctest.ELLIPSIS:对应+ELLIPSIS选项,默认启用后,你在doctest里写的...可以匹配任意中间内容,不用严格完全一致。

额外小技巧

如果你的doctest集中在某几个文件(比如工具类文件utils.py),把pattern改成具体文件名就能减少扫描时间,比如pattern='utils.py';要是有多个文件,也可以用通配符,比如pattern='*utils*.py'。

之后直接运行python manage.py test,Django就会自动加载这些doctest,并且应用你设置的所有选项啦~

内容的提问来源于stack exchange,提问作者iago-lito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:57:28