为什么我在Google App Engine * Development *控制台中看不到任何数据?

时间:2009-12-09 07:07:30

标签: django google-app-engine google-cloud-datastore

我以两种方式之一运行我的谷歌应用引擎应用程序...

  1. 直接使用http://localhost:8080
  2. 中的应用程序
  3. 或从http://localhost:8080/test
  4. 执行单元测试

    当我直接使用应用程序创建实体时,数据在开发控制台(dataStore视图)中可见。

    但是,当我执行单元测试时......即使它们成功并且我可以放入()和get()数据,数据也不会显示在dataStore视图中。知道为什么我看不到我的数据吗?即使它在那里?

    注意:

    • 我使用GAEUnit进行单元测试。
    • 存储的数据主要由StringProperties()。
    • 组成
    • 我使用Python并在GAE之上运行Django,不知道这是否重要。

2 个答案:

答案 0 :(得分:3)

您的Dev Console DataStore视图是否有可能查看与您的django应用程序正在写入的数据存储区不同的数据存储区?我的Django / GAE设置有类似的问题,并通过在启动开发服务器时明确说出我的数据存储区的位置来解决它。要以这种方式启动开发服务器,只需进入django项目的目录并输入:

dev_appserver.py --datastore_path=/path/to/datastore/my_datastore --history_path=/path/to/datastore/my_datastore

答案 1 :(得分:2)

GAEUnit创建自己的代理存根数据存储区,使用当前'2.0a for django'版本的第357行上的代码:

temp_stub = datastore_file_stub.DatastoreFileStub(
    'GAEUnitDataStore', None, None, trusted=True)

此代理数据存储区仅保存在内存中,因此在测试完成运行后将被删除。测试开始运行时它也是空的,即它不包含当前默认开发数据存储区中的任何数据。

您可以临时修改它以使其写入开发系统上的文件,例如:

temp_stub = datastore_file_stub.DatastoreFileStub(
    'GAEUnitDataStore', '/path/to/gaeunit.datastore', None, trusted=True)

然后在另一个端口上运行dev_appserver.py,例如:

dev_appserver.py --port=8081 --datastore_path=/path/to/gaeunit.datastore /path/to/application/

最后,在浏览器中打开http://localhost:8081/_ah/admin以查看临时数据存储的内容。