我可以根据夹具参数ID使用pytest.mark.skipif吗?

时间:2016-04-23 13:25:36

标签: python pytest fixture

我的conftest.py文件中有一个包含三个参数的夹具:

@pytest.fixture(scope="session",
        params=[(33, 303), (303, 3003), (3003, 300003)],
        ids=["small", "medium", "large"])
def complete(request):
    np.random.seed(1234567890)
    return np.random.rand(*request.param)

现在,在特定的长时间运行的测试功能中,我想跳过" large"情况下。

@pytest.mark.skipif(...)
def test_snafu(complete):
    assert ...

这有可能吗?

2 个答案:

答案 0 :(得分:3)

不清楚你在寻找什么

截至目前,跳过标记评估无法访问测试元数据 您可能想在测试函数

中调用pytest.skip

答案 1 :(得分:0)

当然可以。如下图所示 我从参数化灯具的4个参数中跳过了某个参数(使用skipif

在测试执行中,实际上会发生跳过,并且调用测试类中的所有测试将仅针对灯具的前三个参数执行,而灯具执行或处理将针对我们所要执行的参数被跳过根据要满足的特定条件标记为跳过。

@pytest.fixture(
    scope='class',
    params=[
        conf.ACCOUNT_OWNER_ROLE,
        conf.ACCOUNT_READ_ONLY_ROLE,
        conf.ACCOUNT_ADMIN_ROLE,
        pytest.param(conf.PROJECT_USER_ROLE, marks=pytest.mark.skipif(
                environ.get('ENV_FOR_DYNACONF') == 'production',
                reason="This feature isn't yet released to production")
                         ),
    ],
    ids=[
        'Invitee has Account-owner role',
        'Invitee has Account-read-only role',
        'Invitee has Account-Admin role',
        'Invitee has Project-user role',
    ],
)
def my_rbac_root_fixture(
    request,
    spark_client_project_fix,
    spark_client_account_fix,
    spark_client_account_fix_invitee,
):

如果您需要有关此@Midnighter的更多详细信息,请告诉我