gpt4 book ai didi

google-app-engine - 如何模拟 ndb.get_context().urlfetch?

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:02 24 4
gpt4 key购买 nike

在我的测试中,我想模拟 NDB 包提供的 urlfetch,因此在测试执行期间不会发出真正的 http 请求。

urlfetch() 返回 Future,所以我似乎需要了解 NDB 内部结构才能正确模拟它...我还以为我可以模拟 google .appengine.api.urlfetch.create_rpc() 不知何故...但到目前为止我没有取得任何进展...

我该怎么做?

谢谢。

最佳答案

我会回答我自己的问题。在下面的代码中,我使用 mock Michael Foord 的图书馆。

import unittest
from google.appengine.ext import testbed, ndb
from mock import patch, Mock

class MyTestCase(unittest.TestCase):

def setUp(self):
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_urlfetch_stub()

# mock urlrfetch service
uf = self.testbed.get_stub('urlfetch')
uf._Dynamic_Fetch = Mock()

@patch('google.appengine.api.urlfetch.urlfetch_service_pb.URLFetchResponse')
def test_make_request(self, URLFetchResponse):
# mocking rpc response object
response = URLFetchResponse.return_value
response.contentwastruncated.return_value = False
response.statuscode.return_value = 200
response.content.return_value = 'Hello world!'

ctx = ndb.get_context()
fut = ctx.urlfetch('http://google.com')
result = fut.get_result()

self.assertEquals(result.content, 'Hello world!')

def tearDown(self):
self.testbed.deactivate()

关于google-app-engine - 如何模拟 ndb.get_context().urlfetch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943996/

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