Max*_*xim 3 google-app-engine app-engine-ndb
在我的测试中,我想urlfetch
通过NDB包提供模拟,因此在测试执行期间不会发出真正的http请求.
urlfetch()
返回Future
,所以我似乎需要知道NDB内部才能正确地模拟它...而且我认为我可以google.appengine.api.urlfetch.create_rpc()
以某种方式嘲笑......但到目前为止我没有取得任何进展......
我怎样才能做到这一点?
谢谢.
我会回答我自己的问题.在下面的代码中,我使用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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1048 次 |
最近记录: |