python - 我如何使用 GAE 和 Nosetest 模拟用户?

标签 python google-app-engine nosetests nose-gae

当 nose 自行实例化 testbed 时如何调用 call setup_env()?

我正在尝试使用 TDD 开发 App Engine 应用程序,我需要弄清楚如何模拟用户。

我开始我的测试:
nosetests -v --with-gae

我有几个人建议使用 nosetests,因为它会让事情变得更容易。 然而,所有关于如何模拟事物的例子似乎都明确地使用了 testbed.setup_env()
https://cloud.google.com/appengine/docs/python/tools/localunittesting
How do you mock the User service in App Engine?

我不明白如何使用 nosetests 设置环境值。

这是我现在拥有的:

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()  

最佳答案

我想这是我自己想出来的。 我将以下语句添加到测试 setUp() 中:

testself.testbed.setup_env(user_is_admin='1')

关于python - 我如何使用 GAE 和 Nosetest 模拟用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32615802/

相关文章:

python - 在没有安装库的情况下运行 python 脚本

python - 获取 int() 参数必须是字符串或数字,而不是 'Column' - Apache Spark

python - Django 查询检索被选为外键的项目?

google-app-engine - 通过将参数设置为查询对象的 JPA 查询返回空列表

python - 运行 Flask 服务器、nosetests 和覆盖率

python - 如何在 OS X 上的 pythonbrew 下构建 pgmagick?

python - 如何在 App Engine 中使用导入内存缓存的库

javascript - 无法弄清楚如何对谷歌应用引擎执行 XMLHttpRequest

python - Coverage.py 中的 "No source for code"消息

python - 如何为所有 nosetests 测试定义一个设置函数?