(基于硒)的功能测试。这里是我的代码:使用Configurator.make_wsgi_app
访问测试数据库中为我已成功地创建使用分裂(硒)和<code>StoppableWSGIServer</code>功能测试金字塔+ SQLAlchemy的应用
...
engine = engine_from_config(settings, prefix='sqlalchemy.')
DBSession.configure(bind=engine)
Base.metadata.create_all(engine)
...
class FunctionalTest(...):
...
def setUp(self):
...
self.server = http.StopableWSGIServer.create(app)
self.server.wait()
self.browser = splinter.Browser("chrome")
def tearDown(self):
...
self.browser.quit()
self.server.shutdown()
在其中创建app
。
当使用我的FunctionalTest
,浏览器显示出来,服务器启动数据库工程,创建表运行测试用例。但是,测试服务器无法访问测试用例中创建的行,即使两者都使用相同的设置文件初始化。
我试图嘲弄DBSession
和engine
在我models.py
和views.py
和这样既DBSession
和Base.metadata.bind
在我的测试案例和我的看法功能都非常相同的id()
。 (所以,我的理解,是非常相同的对象)然而,查询的测试用例创建的行返回视图[]
和测试失败。
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
如何使测试服务器看到测试用例代码创建的行数:我已经创建了行和DBSession
在models.py
像这样定义之后调用DBSession.flush()
?
恐怕是没有办法解决这个做功能测试时。因为功能测试Web服务器必须在与主测试代码不同的线程中运行,并且事务不能跨越线程边界。 –
根据您的数据库上,你可以很可能实现一些特定数据库的优化,以加快测试。 –