python-3.x - 使用 py.test 在 python 中测试和调试数据存储代码的问题

标签 python-3.x google-app-engine google-cloud-datastore

我正在使用 PyCharm 中的 py.test 对一些 Python google cloud datastore 代码进行单元测试。该代码在数据存储模拟器上本地运行。问题是

  1. 我必须在执行 put_multi()put() 等操作的代码后面放置多个 time.sleep(num_secs) ,并且在 Debug模式下运行代码,逐行检查结果,这样 assert 就不会失败,因为即使代码运行正确,结果也会从模拟器返回使用 query.fetch() 的 code> 不会反射(reflect) datastore 中的更改。我意识到 Python数据存储模拟器 之间可能会发生竞争条件。因此,改变生效的时间会(很长?)延迟?
  2. 有时,即使在 Debug模式下并使用模拟器,我也会遇到HTTP 错误 404:服务不可用。然后,我必须打开 Compute Engine 虚拟机,这样代码就可以再次工作,甚至随后关闭虚拟机。这很奇怪。请注意,当 App Engine 已与 project_id 关联时,就会发生这种情况。

我想知道在 Python 中调试和测试 datastore 代码的最佳方法是什么。

最佳答案

对于#1,数据存储模拟器加剧了 eventual consistency 的影响对于操作的某一部分。来自 gcloud beta emulators datastore start :

--consistency=CONSISTENCY; default="0.9"

Fraction of datastore operations that should succeed.

关于python-3.x - 使用 py.test 在 python 中测试和调试数据存储代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396298/

相关文章:

python - 如何让 Shebang 能够在 python3 和 python3.5 之间选择正确的 Python 解释器

java - 我可以同时拥有 JDO 和 JPA 注释吗?

python - ndb.get_multi 返回 AssertionError

java - 如何从 GAE 数据存储中查询带有转义值的数据?

eclipse - Google App Engine、Maven 和 Eclipse 开发设置

python - 如果 db 文件不存在,如何使 sqlite3.connect() 失败?

python-3.x - 如何进行线性拟合,其中我的变量 X 是 3d 向量?

python - 使用 * 将值打包到元组中,就像函数参数打包一样

google-app-engine - 无法在谷歌应用引擎启动器 : googlecloudsdk. core.credentials.store.RefreshError 中部署:invalid_grant

python - 使用谷歌应用引擎(Python)查询多个表