首页 > 解决方案 > 从夹具内部跳过测试

问题描述

假设我有一个需要实时数据库的装置。

如果实时数据库不存在,我想跳过依赖于该夹具的测试。

目前,我必须手动标记要跳过的测试,这感觉是多余的:

@pytest.fixture
def db_client():
  DB_URI = os.getenv('DB_URI')
  # Set up DB client and yield it

@pytest.mark.skipif(not os.getenv('DB_URI'))
def test_some_feature(db):
  # Use db fixture
  ...

标签: pythontestingpytest

解决方案


pytest.skip在夹具内部调用:

@pytest.fixture
def db():
    db_uri = os.getenv('DB_URI', None)
    if not db_uri:
        pytest.skip('No database available')
    else:
        # Set up DB client and yield it

推荐阅读