Flask單元測試Session資料修改

2021-10-05 12:30:17 字數 1365 閱讀 8940

在測試某些模組時,需要session資料,而測試時啟動的客戶端與用瀏覽器訪問不同,不會儲存cookies,需要其他方法去模擬session

利用 with 語句建立乙個上下文環境訪問session

@patch(

'model.user.getpassword'

)def

test_userlogin200

(self, mock_getpwd)

: mock_getpwd.return_value =

'123456'

)as c:

rv = c.post(

'/users/root/login'

, content_type=

, data='')

self.assertequal(rv.status_code,

200)

assert session[

'username']==

'root'

使用 with 語句塊啟動乙個測試客戶端發出請求,在 with 塊中,可以使用這次請求的上下文資訊,如sessionrequest等,利用這個方法就可以測試session中是否寫入自己期望的值

在前面的方法中,只能去訪問已有的session,不能建立session,要修改session,需要session_transaction()

def

test_gettitle200

(self, mock_get_title):)

as c:

with c.session_transaction(

)as sess:

sess[

'username']=

'root'

rv = c.get(

'/users/root/title'

) self.assertequal(rv.status_code,

200)

assert b'test title'

in rv.data

這裡要特別注意縮排,在with c.session_transaction() as sess:的塊中只修改session,剩下的請求工作要回到上一級的塊中,因為只有這個塊結束,這些修改才會寫入session。官網文件中這沒寫清楚,我全部寫到乙個塊裡後丟擲的異常比**還長=-=

這裡測試了乙個獲取標題的請求,在該請求中,會用session檢查使用者是否登陸,如果不修改session直接測試,返回401,加入session修改後,返回200,測試成功

測試 flask 應用

Flask單元測試post請求傳送資料

使用post請求傳送的資料,一般有兩種格式,一種是表單資料,一種是json資料,兩種資料在flask的後端獲取的操作也不同,對應的在測試時,模擬方式也不同 後端拿資料 request.form key request.form.get key 測試時構造 class restunittest tes...

Flask之單元測試(二十四)

參考文件 flask之單元測試 def num div num1,num2 assert 斷言 後面是乙個表示式,如果表示返回真,則斷言成功,程式能夠繼續往下執行 如果表示式返回的是假,則斷言失敗,assert會丟擲異常assertionerror,終止程式繼續往下執行 assert isinsta...

單元測試 單元測試文章收藏

前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...