python - Pytest在使用参数化时测试KeyError异常
问题描述
我正在使用该@pytest.mark.parametrize
功能使用 pytest 测试多个测试用例。现在我很难理解如何测试我的函数是否KeyError
默认抛出 a,我该如何为它编写测试?
在下面的示例中,transcript
和category
是两个输入参数。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 捕获。
解决方案
推荐阅读
- apache-beam - apache beam (python SDK):后期(或早期)事件被丢弃并触发。如何知道丢弃了多少以及为什么?
- vue.js - 从 vue-hotel-datepicker 访问数据值
- postgresql - postgres中的oracle合并查询
- r - {dplyr} 总结没有按预期工作
- google-cloud-run - 使用 OpenTelemetry 在 Google Cloud Run 上跟踪传播
- reactjs - 如何仅在客户端导入 Next.js 中的函数?
- swiftui - 如何将 HStack 中的视图移动到其他视图的顶部
- python - 在 Python 中绘制文本数据的 KMeans 聚类
- java - JDA 不会注册我的活动(Discord Bot Java)
- sql - SQL查询多对多:查找给定集合中包含所有标签的所有项目