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

Pytest是否支持跳过测试函数内的部分代码而非整个测试函数?

Pytest能否跳过测试函数内的部分代码而非整个测试?

可以实现,但不能用你示例里的pytest.mark.skip()——pytest提供的是**pytest.skip()函数**,专门用于在测试函数内部触发跳过逻辑,满足你要的“跳过后续代码、在测试结果中标记为跳过”的需求。

修改后的可用示例

def test_fill(my_dict: dict):
    # 初始状态检查
    assert all(v is None for v in my_dict.values())
    my_dict.fill()
    # 临时检查所有值非空
    assert all(v is not None for v in my_dict.values())
    
    # 跳过后续代码,测试结果会标记为跳过
    pytest.skip(reason='Need values setup')
    
    # 以下为暂不执行的精确值检查(未来测试内容)
    assert my_dict['key_1'] == 1
    assert my_dict['key_2'] == 10
    assert my_dict['key_3'] == 100

效果说明

  • 当测试执行到pytest.skip()时,会立即抛出跳过异常,终止当前测试的剩余代码执行,后续的精确值检查不会运行。
  • 测试报告里会明确标记该测试为跳过状态,并显示你指定的reason,不会像注释、临时if分支那样无迹可寻,能有效避免遗忘这类未完成的测试。

和其他方法的对比

  • 注释代码:完全不会在测试输出里留下痕迹,时间久了容易彻底遗忘这部分待完成的测试。
  • if分支跳过:需要手动维护跳过条件,同样不会在测试结果里标记为“跳过”,无法直观识别未完成的测试。
  • pytest.skip():既能精准跳过部分代码,又能在测试报告里明确提示,是最符合你需求的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:10:25