Python 我如何用GAE和Nosetest模拟用户?

Python 我如何用GAE和Nosetest模拟用户?,python,google-app-engine,nosetests,nose-gae,Python,Google App Engine,Nosetests,Nose Gae,当nose自己实例化测试床时,如何调用call setup_env() 我正在尝试用TDD开发一个应用程序引擎应用程序,我需要弄清楚如何模仿用户 我以: 鼻测试-v——使用gae 我有几个人建议使用鼻测试,因为它会让事情变得更容易。 然而,所有关于如何模拟事物的示例似乎都明确使用testbed.setup\u env() 我不明白我怎么能用鼻子测试来设定环境值 这就是我现在拥有的: import sys, os, subprocess, time, unittest, shlex

当nose自己实例化测试床时,如何调用call setup_env()

我正在尝试用TDD开发一个应用程序引擎应用程序,我需要弄清楚如何模仿用户

我以:
鼻测试-v——使用gae

我有几个人建议使用鼻测试,因为它会让事情变得更容易。 然而,所有关于如何模拟事物的示例似乎都明确使用testbed.setup\u env()

我不明白我怎么能用鼻子测试来设定环境值

这就是我现在拥有的:

import sys, os, subprocess, time, unittest, shlex     
sys.path.append("/usr/local/google_appengine")   
sys.path.append('/usr/local/google_appengine/lib/')     
sys.path.append("/usr/local/google_appengine/lib/yaml/lib")      
sys.path.append("/usr/local/google_appengine/lib/webapp2-2.5.2")      
sys.path.append("/usr/local/google_appengine/lib/django-1.5")      
sys.path.append("/usr/local/google_appengine/lib/cherrypy")      
sys.path.append("/usr/local/google_appengine/lib/concurrent")      
sys.path.append("/usr/local/google_appengine/lib/docker")      
sys.path.append("/usr/local/google_appengine/lib/requests")      
sys.path.append("/usr/local/google_appengine/lib/websocket")      
sys.path.append("/usr/local/google_appengine/lib/fancy_urllib")      
sys.path.append("/usr/local/google_appengine/lib/antlr3")      

os.environ['APPLICATION_ID'] = 'workout'   

from selenium import webdriver      
from selenium.webdriver.common.keys import Keys  

from google.appengine.api import memcache, apiproxy_stub, apiproxy_stub_map     
from google.appengine.ext import db      
from google.appengine.ext import testbed      
from google.appengine.datastore import datastore_stub_util       
from google.appengine.tools.devappserver2 import devappserver2      

class NewVisitorTest(unittest.TestCase):      
    # enable the datastore stub  
    nosegae_datastore_v3 = True  
    nosegae_datastore_v3_kwargs = {  
        'datastore_file': '/tmp/nosegae.sqlite3',  
        'use_sqlite': True  
    }  

    def setUp(self):      
        # Start the dev server    
       cmd = "/usr/local/bin/dev_appserver.py /Users/Bryan/work/GoogleAppEngine/workout_log/app.yaml --port 8080 --storage_path /tmp/datastore --clear_datastore --skip_sdk_update_check"    
       self.dev_appserver = subprocess.Popen(shlex.split(cmd),     
                                              stdout=subprocess.PIPE)    
       time.sleep(2) # Important, let dev_appserver start up    

       self.datastore_stub = apiproxy_stub_map.apiproxy.GetStub('datastore_v3')    

       self.browser = webdriver.Firefox()      
       self.browser.implicitly_wait(3)      

    def tearDown(self):      
        self.browser.quit()        
        self.dev_appserver.terminate()  

我想这是我自己弄明白的。 我将下面的语句添加到测试设置()


FWIW,您可以使用与配置数据存储存根相同的方式配置用户存根

这是一个

这是你的电话号码


你有错误吗?如果我用tb=testbed.testbed()tb.activate()进行设置,它将不起作用,因为nosetests是自己设置测试床的。你链接到的SO post会告诉你你需要什么。你用鼻子没关系。Nose只是一个测试运行程序,所以它不会改变在GAE中模拟用户的方式。那么,当Nose自己实例化测试床时,如何调用setup_env()?
testself.testbed.setup_env(user_is_admin='1')
class NewVisitorTest(unittest.TestCase):
    # enable the users stub
    nosegae_user = True
    nosegae_user_kwargs = {
        'USER_EMAIL': 'nosegae@example.org',
        'USER_IS_ADMIN': 1  # User should be considered an admin
    }
    # enable the datastore stub
    nosegae_datastore_v3 = True  
    nosegae_datastore_v3_kwargs = {  
        'datastore_file': '/tmp/nosegae.sqlite3',  
        'use_sqlite': True  
    }