Flask 其他測(cè)試技巧

2021-08-10 17:36 更新

除了如上文演示的使用測(cè)試客戶端完成測(cè)試的方法,也有一個(gè) test_request_context() 方法可以 配合 with 語句用于激活一個(gè)臨時(shí)的請(qǐng)求上下文。通過 它,您可以訪問 requestgsession 類的對(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è)試客戶端。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)