W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
除了如上文演示的使用測試客戶端完成測試的方法,也有一個 test_request_context() 方法可以 配合 with 語句用于激活一個臨時的請求上下文。通過 它,您可以訪問 request 、g 和 session 類的對象,就像在視圖中一樣。 這里有一個完整的例子示范了這種用法:
app = flask.Flask(__name__)
with app.test_request_context('/?name=Peter'):
assert flask.request.path == '/'
assert flask.request.args['name'] == 'Peter'
所有其他的和上下文綁定的對象都可以使用同樣的方法訪問。
如果您希望測試應(yīng)用在不同配置的情況下的表現(xiàn),這里似乎沒有一個 很好的方法,考慮使用應(yīng)用的工廠函數(shù)(參考 應(yīng)用程序的工廠函數(shù))
注意,盡管你在使用一個測試用的請求環(huán)境,函數(shù) before_request() 以及 after_request() 都不會自動運行。 然而,teardown_request() 函數(shù)在 測試請求的上下文離開 with 塊的時候會執(zhí)行。如果您 希望 before_request() 函數(shù)仍然執(zhí)行。 您需要手動調(diào)用 preprocess_request() 方法:
app = flask.Flask(__name__)
with app.test_request_context('/?name=Peter'):
app.preprocess_request()
...
這對于打開數(shù)據(jù)庫連接或者其他類似的操作來說,很可能 是必須的,這視您應(yīng)用的設(shè)計方式而定。
如果您希望調(diào)用 after_request() 函數(shù), 您需要使用 process_response() 方法。 這個方法需要您傳入一個 response 對象:
app = flask.Flask(__name__)
with app.test_request_context('/?name=Peter'):
resp = Response('...')
resp = app.process_response(resp)
...
這通常不是很有效,因為這時您可以直接轉(zhuǎn)向使用 測試客戶端。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: