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