(基於硒)的功能測試。這裏是我的代碼:使用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服務器必須在與主測試代碼不同的線程中運行,並且事務不能跨越線程邊界。 –
根據您的數據庫上,你可以很可能實現一些特定數據庫的優化,以加快測試。 –