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

如何让pytest运行全部测试时跳过用例,指定运行时不跳过?

实现方案

可以通过@pytest.mark.skipif结合命令行参数判断来实现需求——仅在无过滤条件的全量测试时跳过目标用例,当通过-k(或其他过滤方式)指定运行该用例时正常执行。

具体代码实现

import pytest

@pytest.mark.skipif(
    lambda config: not config.getoption("-k"),
    reason="仅在全量运行测试时跳过"
)
def test_need_skip_in_full_run():
    # 你的测试逻辑
    assert 2 + 2 == 4

原理说明

  • config.getoption("-k")会获取命令行中-k参数的表达式,全量运行时该值为空(或None),此时skipif条件成立,用例被跳过。
  • 当使用pytest -k test_need_skip_in_full_run(或其他能匹配到该用例的-k表达式)运行时,config.getoption("-k")返回对应的匹配字符串,条件不成立,用例会正常执行。
  • 额外说明:如果通过指定测试文件、测试类等其他过滤方式运行(比如pytest test_demo.py),该用例也会正常执行,这符合“仅全量运行时跳过”的核心需求。

另一种函数内判断的方式

如果需要更灵活的逻辑,也可以在测试函数内部通过request fixture判断:

import pytest

def test_need_skip_in_full_run(request):
    keyword_expr = request.config.getoption("-k")
    if not keyword_expr:
        pytest.skip("全量运行时跳过该用例")
    # 你的测试逻辑
    assert 10 - 5 == 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:12