如何通过编程方式有条件地跳过、标记失败或选择单个/组Cypress及Mocha测试?
Cypress和Mocha的程序化条件测试逻辑
我曾多次以不同形式提出这个问题,也在StackOverflow上看到过许多相关答案,因此决定撰写一篇全面的问答文章,介绍几种解决方案来应对这一难题。
提前说明:Cypress团队认为条件测试执行是一种反模式。我认为在绝大多数情况下确实如此,但条件测试执行仍有合理的使用场景(哪怕只是用于调试),坦率地说,我更关注为大家节省时间,而非纠结你的使用场景是否合理。言归正传。
问题本质
基于特定标记对测试进行分组并运行,本质上就是“如何根据someCondition对测试执行someAction?”的另一种表述。从更宏观的角度看,所有这类问题的核心都是在Cypress或Mocha测试框架中,实现条件执行、跳过或选择测试的方法。
这类需求的另一个常见特点是(并非全部)希望在运行时执行这些检查,即希望通过编程方式选择哪些测试应该被跳过、运行或标记为失败等。
本文面向希望通过编程方式实现目标的用户,即通过判断布尔表达式来达成需求。对于JavaScript而言,布尔表达式的判断涉及多种相等性规则,可参考JS语言本身的相等性规范。
现有插件与扩展
撰写本文时,已有一些成熟的Cypress插件和npm包可解决此类问题。如果你需要更强大的功能,且不介意为条件测试逻辑给项目添加依赖,可参考以下工具:
- skip-test npm包
- cypress-tags npm包*
- cypress-if插件
本文后续将介绍的方案均为DIY实现,适用于希望仅通过Cypress、Mocha(以及默认的Node环境)完成功能的用户。
内容的提问来源于stack exchange,提问作者GrayedFox
相关产品推荐
相关产品推荐

