首页 > 解决方案 > Pytest在使用参数化时测试KeyError异常

问题描述

我正在使用该@pytest.mark.parametrize功能使用 pytest 测试多个测试用例。现在我很难理解如何测试我的函数是否KeyError默认抛出 a,我该如何为它编写测试?

在下面的示例中,transcriptcategory是两个输入参数。category是关键。

@pytest.mark.parametrize("transcript, category, category_naming_score", [
    ("orange banana apple", "fruits", 3),
    ("carrot celery spinach", "vegetables", 3),
    ("birds cardinals blackbirds crows", "birds", 3),
    ("", "fruits", 0),
    ("cardinals", "", pytest.raises(KeyError))])
def test_category_naming_calculate_score(transcript, category, category_naming_score):
    assert calculate_score(transcript, category) == category_naming_score

因此,在上面的示例中,第二个参数应该是查找字典的键,默认情况下,KeyError如果无法找到该键,函数会抛出 a。在最后一个测试用例中,我的函数会抛出错误KeyError: ''。我不确定如何确保将异常作为 pytest 捕获。

标签: pythonunit-testingpytestparameterized-unit-test

解决方案


推荐阅读