gpt4 book ai didi

python - 使用 patch 和 Mock 使用 urllib2 初始化参数

转载 作者:行者123 更新时间:2023-11-28 23:03:06 28 4
gpt4 key购买 nike

我将 Python 2.6.5 与 Mock 0.7.2 一起使用,并进行单元测试,其中我将补丁装饰器用于一个类。

@patch('urllib2.Request')
def test_do_my_call(self, MockClass):

"""will test that _do_my_call is getting called with correct values"""

instance = MockClass.return_value
mock_urlopen = Mock()
mock_urlopen.return_value = 'foo'
urllib2.urlopen = mock_urlopen

response = do_something('MyData')

self.assertEqual(mock_urlopen.call_count, 1)
self.assertEqual(response, 'foo')

上面的代码通过了,验证了urlopen至少被调用了,但是看起来还是有点弱。

“do_something”方法创建一个新请求(因此需要补丁),然后用它调用 urlopen(如上所述,我验证它是否被调用)。但是,我想知道是否有一种方法可以测试从“do_something”中传递给 urllib2.Request() 的参数。例如,do_something 是否传递了正确/预期的 url 和正确/预期的 header ?

这可能吗?

最佳答案

因为创建 Request 实例没有副作用,所以您不应该模拟 urllib2.Request,而是检查真实 Request 实例,它被传递给您模拟的 urlopen 以验证它是否具有正确的状态。

关于python - 使用 patch 和 Mock 使用 urllib2 初始化参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com