我正在使用 PyCharm
中的 py.test
对一些 Python
google cloud datastore
代码进行单元测试。该代码在数据存储模拟器
上本地运行。问题是
- 我必须在执行
put_multi()
、put()
等操作的代码后面放置多个time.sleep(num_secs)
,并且在 Debug模式下运行代码,逐行检查结果,这样assert
就不会失败,因为即使代码运行正确,结果也会从模拟器返回
使用query.fetch()
的 code> 不会反射(reflect)datastore
中的更改。我意识到Python
和数据存储模拟器
之间可能会发生竞争条件。因此,改变生效的时间会(很长?)延迟? - 有时,即使在 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/