pytest捕获异常
时间: 2023-11-18 14:56:54 浏览: 148
pytest可以通过pytest.raises()来捕获异常。当测试代码中抛出异常时,pytest.raises()可以捕获这个异常并进行处理。例如,如果我们想测试一个函数在输入非法参数时是否会抛出ValueError异常,我们可以使用pytest.raises()来捕获这个异常并进行断言。具体的代码实现可以参考下面的范例。
范例:
```
def test_function_with_invalid_input():
with pytest.raises(ValueError):
function_with_invalid_input()
```
相关问题
pytest 异常断言的使用方法
pytest 异常断言可以用于测试代码中是否抛出了特定的异常。使用 pytest.raises() 上下文管理器,可以捕获代码中抛出的异常并进行断言。
以下是使用 pytest.raises() 进行异常断言的示例代码:
```python
import pytest
def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0
```
在这个例子中,我们测试了 1/0 是否会抛出 ZeroDivisionError 异常。使用 pytest.raises() 上下文管理器来捕获异常,并且在上下文中进行断言,断言异常类型是 ZeroDivisionError。
如果测试中没有抛出指定的异常,那么 pytest.raises() 会抛出一个 AssertionError。如果测试中抛出了异常,但不是指定的异常类型,同样会抛出 AssertionError。
除了指定异常类型以外,还可以使用 as 关键字来断言异常消息。例如:
```python
def test_exception_message():
with pytest.raises(ValueError, match=r".*must be greater than zero.*"):
raise ValueError("Value must be greater than zero")
```
在这个例子中,我们测试了抛出 ValueError 异常时,异常消息是否匹配指定的正则表达式。使用 match 关键字来指定正则表达式,断言异常消息是否符合预期。
总之,pytest.raises() 可以帮助我们轻松地测试代码中是否抛出了特定的异常,以及异常消息是否符合预期。
pytest context
pytest是一个Python的测试框架,用于编写和运行测试代码。通过pytest,我们可以方便地进行单元测试、集成测试和功能测试。根据引用,我们可以使用pytest命令来调用pytest,如pytest -p no:doctest。而根据引用,在新的版本中,我们也可以使用python -m pytest来进行调用。所以,pytest的上下文(context)可以通过这些命令来创建和管理测试环境。另外,根据引用中的示例,如果我们要断言某些代码会导致异常,可以使用pytest.raises来捕获异常并进行断言处理。总而言之,pytest提供了丰富的上下文(context)功能,帮助我们更好地组织和管理测试代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Python之pytest从基础到实战(二十六)](https://blog.csdn.net/yyang3121/article/details/80624168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文