如何在urllib2上使用mock,以便不进行外部调用,我可以在read()上引发异常?

时间:2012-01-05 18:57:12

标签: python unit-testing mocking

我想在调用read时引发BadStatusLine。如何使用mock完成该操作?

1 个答案:

答案 0 :(得分:1)

我会将mock对象分配给urllib2.open,如下所示:

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()
  • 返回的模拟对象
  • side_effect用于在尝试执行read()
  • 时引发所需的异常