Hi all,

I'm relatively new to web2py, and still trying to find more resources, but 
i've hit a wall, and I'm not quite sure on this issue I'm working with:


So working with the "guide" from 
http://web2py.com/AlterEgo/default/show/260, I'm trying to create a few 
unit tests to test some RESTFUL api functions. However, while testing 
multiple test suites, it seems that the request information is carrying 
over somehow despite my attempts to make sure that I start with a new 
request object via setUp each time.

The tests will run just fine if they're alone in the suite, but running 
some of them after the other I was running into HTTP 400 errors and during 
debugging I found out that the request data carrying over.

Some "sample" code to illustrate what I was trying to do...

import unittest
from gluon.globals import Request

# import api code
execfile("applications/appname/controllers/app_api.py", globals())class 


# Test Put api
TestPutAPI(unittest.TestCase):

 def setUp(self):
   request = Request(env=[])  # new request, env must be set.

 def test_some_function(self):
   request.vars['var1'] = 1
   request.vars['var2'] = 2
   request.env.request_method = 'PUT'
   response = api() # call api

   self.assertEquals(response['result'], 'success') 

  def tearDown(self):
   db.table.truncate()  # clean up db (nothing request related here)


# Test Post api
TestPostAPI(unittest.TestCase):

 def setUp(self):
   request = Request(env=[])  # new request

 def test_some_function(self):
   request.vars['var5'] = "asdf"
   request.vars['var6'] = 6
   request.env.request_method = 'POST'
   response = api() # call api

   self.assertEquals(response['result'], 'success') 

 def tearDown(self):
   db.table.truncate()  # clean up db (nothing request related here)


# Run tests
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestPutAPI))
suite.addTest(unittest.makeSuite(TestPostAPI))

unittest.TextTestRunner(verbosity=2).run(suite)


Is my entire approach to unit testing wrong? I know there's a lot a mention 
of doctests being recommended, also that the line request = Request() 
recommended by the original article also being wrong (or simply out of 
date), but I'm also unsure of how the request and api call is being 
processed in this scenario. Earlier I tried doing 2 calls to the same api 
in one test function and found that web2py (and this unittest) simply could 
not overwrite the request function - if that made any sense (it didn't, and 
didn't work).

Anyone have any pointers?

Thank you,
KH


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to