我正在尝试在 google app engine、python、selenium、nose 测试等本地运行一些无头测试。我已经设法让所有东西都单独工作,但问题是我不知道当我在哪里指向 selenium运行我的测试。
一种可能的解决方案
这是我已经取得进展的一种可能的解决方案,但我欢迎使用任何允许我使用 selenium 与在测试平台中运行的模型相同的数据库进行交互的解决方案:
我可以继续运行dev_appserver
,8080
然后将 selenium 指向它,但是测试平台数据存储将与 selenium 指向的服务器不同。我尝试通过dev_appserver
像这样运行来统一它们:
$ dev_appserver.py --datastore_path tests/datastore --port 8080 .
在我的单元测试中setUp
:
self.testbed.init_datastore_v3_stub(datastore_file='tests/datastore',use_sqlite=True)
(我设置 use_sqlite 是因为我没有设置错误。我认为这dev_appserver
也在使用 sqlite,所以他们显然需要期待相同的格式)。
不幸的是,这不起作用。我可以在数据存储中创建一个实体(作为单元测试的一部分或正在运行的服务器),并通过删除文件并看到实体消失来确认它是持久的。但是,如果我使用 提供的数据存储查看器dev_appserver
来查看实体,它永远不会发现那些由我的单元测试创建的实体,并且我的单元测试运行的命令也永远不会发现那些属于本地服务器的实体。
一种可能的想法是app_id
单元测试和服务器之间的不同,所以我手动设置了app_id
使用:
self.testbed.setup_env(app_id='foo')
where与我的文件foo
中的相同。app.yaml
我什至尝试过dev~foo
,因为这是管理控制台显示的内容。那也没有用。
结论
这是我所得到的。任何关于如何让 testbed 和 selenium(或 selenium 访问的服务器)与同一数据库交互的提示将不胜感激。