如何在urllib2上使用mock以避免外部调用并在read()时抛出异常?

0 投票
1 回答
867 浏览
提问于 2025-04-17 09:37

我想在调用读取操作时抛出一个叫做 BadStatusLine 的错误。我该怎么用 mock 来实现这个呢?

1 个回答

1

我会像这样给 urllib2.open 赋值一个 mock 对象:

from mock import Mock

import urllib2
import httplib

mock = Mock()
mock.return_value.read.side_effect = httplib.BadStatusLine('Mocked error')

urllib2.open = mock

response = urllib2.open()
response.read()

注意:

  • return_value 用来获取 open() 返回的 mock 对象
  • side_effect 用来在执行 read() 时抛出想要的异常

撰写回答