How to unit test Google Cloud Endpoints

后端 未结 6 1412
盖世英雄少女心
盖世英雄少女心 2020-12-23 00:12

I\'m needing some help setting up unittests for Google Cloud Endpoints. Using WebTest all requests answer with AppError: Bad response: 404 Not Found. I\'m not really sure if

6条回答
  •  爱一瞬间的悲伤
    2020-12-23 00:36

    After digging through the sources, I believe things have changed in endpoints since Ezequiel Muns's (excellent) answer in 2014. For method 1 you now need to request from /_ah/api/* directly and use the correct HTTP method instead of using the /_ah/spi/* transformation. This makes the test file look like this:

    from google.appengine.ext import testbed
    import webtest
    # ...
    def setUp(self):
        tb = testbed.Testbed()
        # Setting current_version_id doesn't seem necessary anymore
        tb.activate()
        tb.init_all_stubs()
        self.testbed = tb
    
    def tearDown(self):
        self.testbed.deactivate()
    
    def test_endpoint_insert(self):
        app = endpoints.api_server([TestEndpoint]) # restricted is no longer required
        testapp = webtest.TestApp(app)
        msg = {...} # a dict representing the message object expected by insert
                    # To be serialised to JSON by webtest
        resp = testapp.post_json('/_ah/api/test/v1/insert', msg)
    
        self.assertEqual(resp.json, {'expected': 'json response msg as dict'})
    

    For searching's sake, the symptom of using the old method is endpoints raising a ValueError with Invalid request path: /_ah/spi/whatever. Hope that saves someone some time!

提交回复
热议问题