簡體   English   中英

在燒瓶單元測試中超越flask.g

[英]Overriding flask.g in flask unit test

我正在嘗試為使用OpenID進行身份驗證的燒瓶應用程序編寫一些單元測試。 由於似乎無法通過OpenID登錄測試客戶端(我問過這個問題,但它沒有收到任何響應: Flask OpenID unittest ),我想在我的測試中覆蓋g.user,所以我嘗試了來自http://flask.pocoo.org/docs/testing/#faking-resources-and-context的代碼片段,它按預期工作。

不幸的是,當使用flask-login時,g.user會在設置的before_request包裝器中被覆蓋

g.user = current_user

current_user是匿名的,所以我的測試用例被破壞了。 一個解決方法是僅在測試模式下執行before_request包裝器代碼,但是您需要在生產代碼中添加特定於測試的邏輯。 我也試過搞亂請求上下文,但g.user最終仍會被覆蓋。 有什么想法可以解決這個問題嗎?

基於Flask單元測試中的另一個問題,如何在請求全局`g`對象上模擬對象? 對我有用的是以下內容:

在我的應用程序中,我將before_request中包含的登錄邏輯重構為一個單獨的函數。 然后,我在我的測試中修補了該函數,以便它返回我想用於一堆測試的特定用戶。 before_request仍然使用測試運行,但通過修補它調用的函數,我現在可以避免實際的登錄過程。

我不確定這是最干凈的方式,但我認為它比在before_request中添加僅測試邏輯更好; 它只是一個重構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM