Flask小知識集合
阿新 • • 發佈:2022-03-02
flask 小知識集合
全域性變數g的使用
flask在上下文中提供了四種變數,分別是:
變數名 | 上下文 | 說明 |
---|---|---|
current_app | 應用上下文 | 當前啟用程式的程式例項 |
g | 應用上下文 | 處理請求時用作臨時儲存的物件。每次請求都會重設這個變數 |
request | 請求上下文 | 請求物件,封裝了客戶端發出的HTTP請求中的內容 |
session | 請求上下文 | 使用者會話,用於儲存請求之間需要“記住”的字典 |
其中g就是在一次請求中當做全域性變數來使用的。g:global,給g賦值,就可以在當前這次請求中全域性使用。
傳參
import time from flask import Flask # 例項化一個Flask類,app代表著flask程式。 app = Flask(__name__) # 向flask例項新增一個路由 @app.route('/') def hello_world(): print(double(10)) return 'Hello World!' def double(x): return 2 * x
全域性變數
import time
from flask import Flask,g
# 例項化一個Flask類,app代表著flask程式。
app = Flask(__name__)
# 向flask例項新增一個路由
@app.route('/')
def hello_world():
g.x = 20
print(double())
return 'Hello World!'
def double():
return 2 * g.x
g物件在整個request請求處理期間生效,這表明,g物件是與request是一一對應的。一次request請求,就有一個g物件,在這次請求之前,之後,以及同時間的請求裡,他們互不干擾。
異常捕獲
flask提供了一個專門用來處理應用錯誤的裝飾器errorhandler, 利用這個裝飾器,你可以非常輕鬆的實現對系統錯誤異常的捕捉和處理。
errorhandler可以傳入http code,例如404,500。這是比較常見的請求錯誤,如果能夠為這種錯誤提供專門的頁面,無疑會提高使用者的體驗。除了http code, 還可以傳入異常類,捕捉特定的異常。
import time from flask import Flask,g app = Flask(__name__) @app.errorhandler(404) def error(e): print('捕捉到404,找不到路由') return '捕捉到404,找不到路由', 404 @app.errorhandler(ZeroDivisionError) def catch_except(e): return '捕捉到異常 '+ str(e), 500 @app.route('/') def hello_world(): a = 0/0 return 'Hello World!'
正常請求,除0報錯
請求不存在路由
計算測試覆蓋率
coverage.py是一個使用python編寫的檢查程式碼覆蓋率的工具,我們可以使用它來檢查測試覆蓋率。
安裝
pip install coverage
簡單使用
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
add(2,3)
使用如下命令獲取測試結果
coverage run cover_test.py
coverage report
(work) ➜ Desktop coverage report
Name Stmts Miss Cover
-----------------------------------
cover_test.py 7 2 71%
-----------------------------------
TOTAL 7 2 71%
在flask中,可以執行測試命令同時開啟覆蓋率檢查。
coverage run --source=sayhello -m unittest discover
--source:指定要檢查的包或模組為sayhello
-m 指定自動測試的命令。如果使用pytest則為 -m pytest 使用unittest則為 -m unittest