I should have mentioned one other thing. Before running my unit test, I set the PYTHONPATH environment variable so that I could import the Google app engine libraries.
export PYTHONPATH=~/dev/python/google/google_appengine_1.6.3_source/ google_appengine On Mar 21, 11:14 am, David Phillips <david.phillips....@gmail.com> wrote: > Thank you, howesc. I'll take a close look at your file. > > I finally cobbled together a file to unit test an object in my project > that uses the unittest library, Google's memcache and the testbed > library, and a web2py model. I am hoping it will scale up to test > controller actions as well as individual modules. > > Included below is the relevant portion of that file. Notice the part > where I had to manually add a path to dev_appserver's yaml library. I > had to do that to import the testbed module. > > Here is the command line to run my unit test. > > $ cd web2py > $ python web2py.py -S myproj -M -R applications/myproj/test/ > test_account.py > > ------ > > import sys, unittest > > from google.appengine.api import memcache > > yaml_path = '~/google_appengine_1.6.3_source/google_appengine/lib/yaml/ > lib/' > sys.path.append (yaml_path) > > from google.appengine.ext import testbed > > from account_list import Account_List > from account import Account > class Test_Account_List (unittest.TestCase): > def setUp (self): > self.testbed = testbed.Testbed() > self.testbed.activate() > self.testbed.init_memcache_stub() > > def test_account_list (self): > al1 = Account_List (db) > al1.clear_list (db) # To start from a known state > al2 = Account_List (db) > self.assertIs (al1, al2) > active_list1 = memcache.get ('account_list') > active_list2 = al2.active_accounts(db) > self.assertEqual (active_list1, active_list2) > > def tearDown (self): > self.testbed.deactivate() > > suite = unittest.TestSuite() > suite.addTest (unittest.makeSuite (Test_Account)) > suite.addTest (unittest.makeSuite (Test_Account_List)) > unittest.TextTestRunner (verbosity = 2).run (suite) > > On Mar 21, 2:35 am, howesc <how...@umich.edu> wrote: > > > > > > > > > attached is a controller that i use, adapted from the testing tools in the > > admin interface. note that i set a request parameter 'test_db' and in > > models i detect that parameter and connect to a different namespace so that > > my tests run in a controlled DB environment - remember that if you want to > > setup some test data to start with. :) > > > i have not used this in a live GAE environment so i don't know how well it > > works. i fear that extensive tests would run past the 60 second timeout > > for web requests. > > > let me know if you have questions. > > > On Tuesday, March 20, 2012 1:54:03 PM UTC-7, David Phillips wrote: > > > > I am writing a web application using web2py for execution on app > > > engine. I've deployed other web2py apps there but I've never used any > > > app engine-specific utilities. In this project I want to use app > > > engine's taskqueue and run it on a backend instance. > > > > I'm developing on app engine's dev_appserver which is working out > > > okay, but but I'm not seeing how to do unit testing. > > > > Is this a problem that has been solved already? > > > tests.py > > 6KViewDownload