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

Django中如何指定起始测试用例?跳过已通过测试

解决Django测试从指定位置开始运行的技巧

针对你遇到的问题,这里有几个实用的技巧可以跳过已通过的测试,直接从上次失败的位置开始验证:

  • 精准指定测试范围
    每次修复完失败测试后,直接指定从该测试所在的类或模块开始运行。比如上次失败的是tests.test_checkout.CheckoutTests.test_free_shipping,先单独跑这个测试确认修复:

    python manage.py test tests.test_checkout.CheckoutTests.test_free_shipping
    

    确认通过后,再运行该测试类的剩余测试:

    python manage.py test tests.test_checkout.CheckoutTests
    

    接着是整个模块,再逐步扩展到后续未验证的模块,完全跳过前面已经确认通过的部分。

  • 排除已通过的测试模块
    用Django测试的--exclude参数直接跳过已经验证通过的模块或目录。比如已经确认tests.test_users和tests.test_products全部通过,就可以这样运行:

    python manage.py test --exclude=tests.test_users --exclude=tests.test_products --failfast
    

    这样只会运行剩下的未验证测试,节省大量等待时间。

  • 给测试打标签并排除已通过项
    给已经通过的测试类或方法添加自定义标签,比如在测试代码里加上:

    from django.test import tag
    
    @tag('passed')
    class UserCreationTests(TestCase):
        # 已通过的测试方法
    

    之后运行测试时排除这个标签,只跑未标记的测试:

    python manage.py test --exclude-tag passed --failfast
    

    这个方法适合长期维护测试集,每次验证通过的测试都打上标签,逐步缩小需要运行的范围。

  • 换用pytest工具(可选)
    如果愿意切换测试工具,pytest对Django的支持很完善,而且自带更灵活的测试选择功能:

    • 只跑上次失败的测试:pytest --last-failed -x
    • 先跑失败测试再跑其他:pytest --failed-first -x
      还能精准指定测试路径,完全满足从指定位置开始运行的需求。

另外,记得搭配--keepdb参数,避免每次运行测试都重新创建数据库,能大幅减少初始化时间,进一步提升效率:

python manage.py test --keepdb --exclude=tests.test_users --failfast

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:12:26