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.