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
相关产品推荐
相关产品推荐

