mock测试LOGGER异常
时间: 2023-07-01 15:07:20 浏览: 137
当我们进行单元测试时,有时候我们需要测试一些代码中的日志记录逻辑,这时候就可以使用mock来模拟日志记录器(Logger)的行为。如果我们想测试一个函数,该函数中有记录日志的代码,我们可以使用mock来模拟Logger的行为,并判断是否正确地记录了日志。
下面的例子是一个记录日志的函数:
```python
import logging
def my_func():
try:
# some code here
except Exception as e:
logging.error(f"An error occurred: {e}")
```
要测试这个函数,我们需要使用mock来模拟Logger的行为。使用mock可以让我们控制Logger的行为,例如: 让Logger记录日志、不记录日志、记录错误级别的日志等等。
下面是一个使用mock测试Logger异常的例子:
```python
import unittest
from unittest import mock
import logging
def my_func():
try:
# some code here
except Exception as e:
logging.error(f"An error occurred: {e}")
class TestMyFunc(unittest.TestCase):
def test_my_func_logs_exception(self):
# create a mock logger
mock_logger = mock.Mock(spec=logging.Logger)
# replace the global logger with the mock logger
logging.getLogger = mock.MagicMock(return_value=mock_logger)
# call the function that logs an exception
my_func()
# assert that the logger's error method was called once
mock_logger.error.assert_called_once()
```
在这个例子中,我们使用了unittest模块和mock模块来对my_func()函数进行测试。我们首先创建了一个mock日志记录器(mock_logger),接着使用mock模块的MagicMock()方法来替换全局的日志记录器(logging.getLogger),让其返回我们创建的mock_logger。
然后,我们调用my_func()函数,这时候会触发mock_logger.error()方法的调用,我们可以通过assert_called_once()方法来判断该方法是否被调用了一次。
这就是mock测试Logger异常的例子。使用mock可以让我们在测试中模拟各种场景,包括模拟日志记录器的行为。
阅读全文