I figured out that when i use env() in stead of exec_environment() i can successfully load my environment. Is this the recommended way?
def setUp (self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() #env = exec_environment() environment = env('init', True) On Monday, October 14, 2013 8:31:34 PM UTC+2, Quint wrote: > > Guys, > > What are the steps i need to take to be able to run tests while using GAE? > > Do you want me to to create an issue? > > > > On Sunday, October 13, 2013 3:14:46 PM UTC+2, Quint wrote: >> >> That indeed had something to do with it. >> After i changed it to this: >> >> db = DAL('google:datastore') >> session.connect(request, response, db=db) >> >> I got this error: >> >> Traceback (most recent call last): >> File "X:\GAE\*******\tests\test_fragments.py", line 25, in setUp >> exec_environment('applications/init/models/db.py') >> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\shell.py", >> line 93, in exec_environment >> execfile(pyfile, env) >> File "applications/init/models/db.py", line 30, in <module> >> session.connect(request, response, db=db) >> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\globals.py >> ", line 730, in connect >> response.session_id_name = 'session_id_%s' % masterapp.lower() >> AttributeError: 'NoneType' object has no attribute 'lower' >> >> After i removed this line >> >> session.connect(request, response, db=db) >> >> I get this: >> >> Traceback (most recent call last): >> File "X:\GAE\*******\tests\test_fragments.py", line 25, in setUp >> exec_environment('applications/init/models/db.py') >> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\shell.py", >> line 93, in exec_environment >> execfile(pyfile, env) >> File "applications/init/models/db.py", line 34, in <module> >> auth = Auth(db) # authentication/authorization >> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\tools.py", >> line 1144, in __init__ >> request = current.request >> AttributeError: 'thread._local' object has no attribute 'request' >> >> There is no request object? >> >> >> On Sunday, October 13, 2013 2:51:35 PM UTC+2, Niphlod wrote: >>> >>> I think that that's a problem on how by default web2py recognize a GAE >>> environment. If I'm right, you didn't change at all the db.py lines that do >>> something like this >>> >>> if not request.env.web2py_runtime_gae: >>> ## if NOT running on Google App Engine use SQLite or other DB >>> db = DAL('sqlite://storage.sqlite',pool_size=1,check_reserved=['all']) >>> else: >>> ## connect to Google BigTable (optional 'google:datastore://namespace') >>> db = DAL('google:datastore') >>> >>> >>> I think that you run your tests where request.env.web2py_runtime_gae is >>> False. To confirm this, strip that part and just use >>> >>> db = DAL('google:datastore') >>> >>> On Sunday, October 13, 2013 2:35:14 PM UTC+2, Quint wrote: >>>> >>>> Hi, >>>> >>>> I am trying to create a test for one of my modules. >>>> This module depends on several global variables like "Resonse" and some >>>> extra things i store in current from one of my Models. (current.myapp.*** >>>> ). >>>> So to be able to run the test i need to execute some of the models like >>>> this. (Is this the correct way?) >>>> (The testbed stuff is for GAE to create stubs for GAE services) >>>> >>>> def setUp (self): >>>> self.testbed = testbed.Testbed() >>>> self.testbed.activate() >>>> self.testbed.init_datastore_v3_stub() >>>> self.testbed.init_memcache_stub() >>>> exec_environment('applications/init/models/0.py') >>>> exec_environment('applications/init/models/db.py') >>>> >>>> I am using GAE with web2py 2.6.4 source and Python 2.7.3 >>>> >>>> Now when i run the test i get this error: >>>> >>>> No handlers could be found for logger "web2py" >>>> DEBUG: connect attempt 0, connection error: >>>> Traceback (most recent call last): >>>> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\dal.py", l >>>> ine 7854, in __init__ >>>> self._adapter = ADAPTERS[self._dbname](**kwargs) >>>> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\dal.py", l >>>> ine 2288, in __init__ >>>> if do_connect: self.find_driver(adapter_args) >>>> File "C:\Users\Quint\Documents\Projects\GAE\*******\gluon\dal.py", l >>>> ine 791, in find_driver >>>> raise RuntimeError("no driver available %s" % str(self.drivers)) >>>> RuntimeError: no driver available ('sqlite2', 'sqlite3') >>>> >>>> So it looks like DAL is instantiated and by default it tries to connect >>>> to sqlite? >>>> >>>> What can i do about this? >>>> >>>> BTW when i try to start the web2py shell i get a similar error only now >>>> i says that it find a "google" driver: >>>> >>>> No handlers could be found for logger "web2py" >>>> web2py Web Framework >>>> Created by Massimo Di Pierro, Copyright 2007-2013 >>>> Version 2.6.4-stable+timestamp.2013.09.22.01.43.37 >>>> Database drivers available: google >>>> DEBUG: connect attempt 0, connection error: >>>> Traceback (most recent call last): >>>> File "X:\GAE\*******\gluon\dal.py", line 7854, in __init__ >>>> self._adapter = ADAPTERS[self._dbname](**kwargs) >>>> File "X:\GAE\*******\gluon\dal.py", line 2288, in __init__ >>>> if do_connect: self.find_driver(adapter_args) >>>> File "X:\GAE\*******\gluon\dal.py", line 791, in find_driver >>>> raise RuntimeError("no driver available %s" % str(self.drivers)) >>>> RuntimeError: no driver available ('sqlite2', 'sqlite3') >>>> >>>> Thanks! >>>> >>>> >>>> -- 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/groups/opt_out.