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

无需修改代码添加only/skip,如何在Mocha中过滤或跳过测试?

嘿,好问题!Mocha提供了好几种无需修改代码(不用加only或skip)就能过滤、跳过测试的方法,我来给你逐一说明:

1. 用--grep参数按测试名称匹配

这是最常用的临时过滤测试的方式,通过测试用例的名称来精准或模糊匹配要执行的测试。

  • 假设你有个测试用例写的是:
    it('完成订单支付的核心流程', async () => {
      // 测试逻辑
    });
    
    想单独跑这个测试,直接在命令行执行:
    mocha --grep "完成订单支付的核心流程"
    
  • 还支持正则表达式,比如想跑所有包含"支付"关键词的测试:
    mocha --grep "支付"
    
  • 如果想跳过某些测试,加上--invert参数反向匹配:
    # 跳过所有包含"性能测试"的用例
    mocha --grep "性能测试" --invert
    
2. 直接指定测试文件/目录

如果你的测试按文件或目录划分得很清晰,直接在命令行指定要执行的文件或目录即可:

  • 只跑单个测试文件:
    mocha test/payment.test.js
    
  • 只跑某个目录下的所有测试:
    mocha test/order/
    
3. 给测试加"标记"配合--grep

如果测试数量多,名称又不统一,可以给测试用例加自定义标记,方便批量筛选:

  • 给测试加标记(比如用[tag]的格式):
    it('[payment] 验证支付回调逻辑', async () => {
      // 测试逻辑
    });
    it('[payment] 检查退款金额计算', async () => {
      // 测试逻辑
    });
    
  • 执行所有带[payment]标记的测试:
    mocha --grep "\[payment\]"
    
    (注意正则里的方括号要转义)
针对你具体场景的解决方案

如果你的测试场景有5个测试,想只执行其中一个,完全不用改代码:
只要记住那个测试的名称(或者其中的关键词),用--grep精准匹配就行。比如那个测试叫"生成订单号的唯一性验证",执行:

mocha --grep "生成订单号的唯一性验证"

Mocha就会只跑这一个测试用例。

这些方法都不需要修改测试代码,非常适合临时调试、验证特定场景的需求,避免了加only/skip后忘记还原的尴尬~

内容的提问来源于stack exchange,提问作者Carlos Miguel Colanta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:52:27