首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在GAE中对基于NDB的Flask应用程序进行单元测试时抛出错误

在GAE中对基于NDB的Flask应用程序进行单元测试时抛出错误
EN

Stack Overflow用户
提问于 2013-06-04 19:50:00
回答 2查看 480关注 0票数 2

我正在单元测试用例中创建用户配置文件,并尝试保存它。代码如下:

代码语言:javascript
运行
复制
def create_user(self, email, user_id, is_admin=False):

    self.testbed.setup_env(
        USER_EMAIL = email,
        USER_ID = user_id,
        USER_IS_ADMIN = '1' if is_admin else '0',
        overwrite = True)
    user = users.get_current_user()
    print "user:", user
    u = UserProf( id=str(user.user_id()),
                  nickname = "Test",
                  email_address = user.email() )
    u.put()

我在执行测试用例时调用此函数,如下所示:

代码语言:javascript
运行
复制
def test_users(self):

    self.create_user('test@example.com', '123', True)
    result = self.app('/users/')
    self.assertTrue("Test" in result)

u.put()正在引起问题。错误:

BadKeyError:实体键与数据存储区返回的键不同。预期的键(‘UserProf’,'123'),获取的键(‘UserProf’,'123')

完整的堆栈跟踪,它很大:

https://gist.github.com/rajendrakrp/5705313

我在net中没有找到任何与这个错误相关的东西。除了一个之外,他也报告了同样的问题:https://gist.github.com/sivy/3364880

谢谢。

更新:增加了UserProf的模型类。

代码语言:javascript
运行
复制
class UserProf(ndb.Model):

    nickname = ndb.StringProperty(required=True)
    email_address = ndb.StringProperty(required=True)
    is_admin = ndb.BooleanProperty()
    teams = ndb.KeyProperty(repeated=True)
    is_manager = ndb.BooleanProperty()
EN

回答 2

Stack Overflow用户

发布于 2013-09-08 21:07:29

在过去的几个小时里,我刚刚遇到了同样的问题,我最终使用nose gae和标志“-- last sandbox”运行了测试,正如这个bug问题https://code.google.com/p/nose-gae/issues/detail?id=60中所指出的那样。

我意识到这是一个古老的问题,但我想我会把这篇文章贴出来,以防它可以帮助任何人测试ndb的这个错误。

票数 3
EN

Stack Overflow用户

发布于 2015-04-29 05:10:36

您必须为您想要在单元测试中使用的服务启用存根,包括数据存储。

代码语言:javascript
运行
复制
class DemoTestCase(unittest.TestCase):

  def setUp(self):
    # First, create an instance of the Testbed class.
    self.testbed = testbed.Testbed()
    # Then activate the testbed, which prepares the service stubs for use.
    self.testbed.activate()
    # Next, declare which service stubs you want to use.
    self.testbed.init_datastore_v3_stub()
    self.testbed.init_memcache_stub()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16917039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档