Next chapter in web2py book *Pytest your app the right way*
2018-03-07 18:02 GMT+00:00 Yoel Benítez Fonseca <[email protected]>: > H! > > checkout: https://github.com/viniciusban/web2py.test > > > > On Wed, Mar 7, 2018 at 10:10 AM, Kevin Huang <[email protected]> wrote: > >> >> 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/def >> ault/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 [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > 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 [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

