[英]How do I mock users with GAE and Nosetest?
當鼻子實例化自己的測試平台時,如何調用setup_env()?
我正在嘗試使用TDD開發App Engine應用程序,我需要弄清楚如何模擬用戶。
我開始測試:
nosetests -v --with-gae
我有幾個人建議使用nosetests,因為它會讓事情變得更容易。 但是,有關如何模擬事物的所有示例似乎都明確使用了testbed.setup_env()
https://cloud.google.com/appengine/docs/python/tools/localunittesting
你如何模擬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')
FWIW,您可以像配置數據存儲區存根一樣配置用戶存根。
以下是支持的配置鍵
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.