自動話測試最常見的形式是單元測試(unit test
)
單元測試是指對程式**最小的單元進行測試,例如python函式或方法
python內建了乙個單元測試框架 -----unittest
。
unittest主要包含一下幾個概念
測試用例(test case
)
最小
的測試單元。繼承於unittest.testcase
的類。
測試韌體(test fixture
)
需要準備測試所需要的前期工作和後期清理工作的測試用例。
前期準備工作:測試用例中實現setup()
或setupclass()
後期清理工作:測試用例中實現teardown()
或teardownclass()
後面的兩個方法都需要接受乙個類作為引數,並且附加classmethod
裝飾器。
測試集(test suite
)
他是乙個測試用例的集合
測試執行器(test runner
)
用來測試和執行測試,並呈現給使用者
class
basetestcase
(unittest.testcase)
:def
setpup
(self)
:'develop'
) testing=
true
, wtf_csrf_enabled=
false,)
defteardown
(self)
: clear(
)
flask-wtf缺省會開啟csrf保護,但是測試時,不需要驗證csrf,開啟csrf會讓post變得困難。所以這裡關閉csrf保護
測試也會對資料庫進行修改,為了不影響資料,使用單獨的資料庫。這裡用sqlite
直接在以上的**中,嵌入測試方法,測試方法以test_
開頭。測試執行器才會識別為測試並呼叫
class
basetestcase()
:...
def(self)
:none).
..
斷言是用來告訴執行器本次執行是否符合預期。
常用的斷言方法如下:
方法驗證情況
assertequal(a,b)
a==b
assertnotequal(a,b)
a!=b
asserttrue(x)
x is true
assertfalse(x)
x is false
assertis(a,b)
a is b
assertisnot(a,b)
a is not b
assertisnone(x)
x is none
assertisnotnone(x)
x is not none
assertin(a,b)
a in b
assernotin(a,b)
a not in b
assertisinstance(a,b)
isinstance(a,b)
assertnotisinstance(a,b)
not isinstance(a,b)
以上是常用的斷言方法。
在測試時,是沒有flask上下文存在的。但是有些測試必須依賴於這些上下文。
我們需要顯式的推送上下文,需要在setup
中推送,在teardown
中刪除。
class
basetestcase
(unittest.testcase)
:def
setpup
(self)
:'develop'
) testing=
true
, wtf_csrf_enabled=
false,)
)###建立上下文物件
self.context.push(
)###推送上下文
) db.create_all(
)def
teardown
(self)
: clear(
)
未完待續 python flask 如何實現http介面
為什麼要做這個?mock 第三方服務時,需要使用,另外包括自身開發,有時也會用到python 檢測是否有資料 return fail params request.data.decode utf 8 獲取到post過來的資料,因為我這裡傳過來的資料需要轉換一下編碼。根據晶具體情況而定 prams j...
python Flask 擴充套件
flask有兩大核心 werkzeug和jinja2。werkzeug實現路由 除錯和web伺服器閘道器介面。jinja2實現了模板。flask框架是以werkzeug為基礎實現的。werkzeug是乙個遵循wsgi協議的python函式庫。其內部實現了很多web框架底層的東西,比如request和...
起步,Python Flask記錄
首次寫部落格,主要為記錄一下這幾天來一直在學習的乙個python的框架flask。安裝flask需要用到pip或easy install 可選擇是否使用virtuanlenv安裝框架,這種安裝方式需要每次啟動時,都要進入python虛擬環境中。用命令 pip install virtualenv 安...