Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I unit test responses from the webapp WSGI application in Google App Engine?

I'd like to unit test responses from the Google App Engine webapp.WSGIApplication, for example request the url '/' and test that the responses status code is 200, using GAEUnit. How can I do this?

I'd like to use the webapp framework and GAEUnit, which runs within the App Engine sandbox (unfortunately WebTest does not work within the sandbox).

like image 388
David Coffin Avatar asked Sep 20 '08 08:09

David Coffin


2 Answers

I have added a sample application to the GAEUnit project which demonstrates how to write and execute a web test using GAEUnit. The sample includes a slightly modified version of the 'webtest' module ('import webbrowser' is commented out, as recommended by David Coffin).

Here's the 'web_tests.py' file from the sample application 'test' directory:

import unittest
from webtest import TestApp
from google.appengine.ext import webapp
import index

class IndexTest(unittest.TestCase):

  def setUp(self):
    self.application = webapp.WSGIApplication([('/', index.IndexHandler)], debug=True)

  def test_default_page(self):
    app = TestApp(self.application)
    response = app.get('/')
    self.assertEqual('200 OK', response.status)
    self.assertTrue('Hello, World!' in response)

  def test_page_with_param(self):
    app = TestApp(self.application)
    response = app.get('/?name=Bob')
    self.assertEqual('200 OK', response.status)
    self.assertTrue('Hello, Bob!' in response)
like image 155
Steve Avatar answered Nov 18 '22 01:11

Steve


Actually WebTest does work within the sandbox, as long as you comment out

import webbrowser

in webtest/__init__.py

like image 2
David Coffin Avatar answered Nov 18 '22 02:11

David Coffin