為什麼要使用unittest?
前面我們已經寫**實現了註冊介面的處理呼叫,但是乙個介面往往需要多條測試用例才能完整的覆蓋到每一種情況,針對於單介面多條測試用例需要執行的情況,我們該如何處理呢?
在unittest的測試類中定義多個測試方法來完成測試,這可能是大家最先想到的乙個解決方法,當然也是能夠達到目的的,以下面的註冊介面為例,我們基於此思路來編碼實現介面的完整測試。
1)正確的郵箱賬號註冊
2)輸入無效的郵箱賬號註冊
3)輸入已經存在的郵箱賬號註冊
根據上面的三條測試用例,把每條用例都轉化成unittest裡面的測試用例。
新建乙個test_開頭(必須)的.py檔案,如test_register.py
匯入unittest
編寫乙個test開頭(必須)的類,並繼承unittest.testcase,做為測試類
在類中編寫乙個test_開頭(必須)的方法,作為用例。注意:用例執行順序並非按書寫順序執行,而是按用例名ascii碼先後順序執行
完整的介面測試用例包含:
1.資料準備:準備測試資料,可手工準備,也可使用**準備(通常會涉及資料庫的操作,比如傳送驗證碼後)
2.傳送請求:傳送介面請求
3.響應斷言、資料庫斷言:這個根據需要,一般響應斷言後還需要進行資料庫斷言,以確保介面資料庫操作的正確性
5.資料清理:如果介面有更新資料庫操作,斷言結束後需要還原更改
unittest提供了豐富的斷言方法
test fixtures即setup(用例準備)及teardown(測試清理)方法,用於分別在測試前及測試後執行
按照不同的作用範圍分為:
# 匯入
import unittest
import requests
class testregister(unittest.testcase): # 類必須以test開頭,繼承testcase
def setup(self):
print("*****=開始執行測試用例*****=")
self.url = ''
def teardown(self):
print("*****=測試用例執行完畢*****=")
# 測試用例 - 正常註冊
def test_register_normal(self): # 每一條測試用例以test_開頭
# 傳送請求
params =
res = requests.post(self.url,params)
# 斷言:根據實際測試場景,可以查詢資料庫是否有新註冊的使用者、對比介面的返回資訊、對比狀態碼等等
self.assertequal(200, res.status_code)
# 測試用例 - 重複註冊
def test_register_existing(self):
# 傳送請求
params =
res = requests.post(self.url,params)
# 斷言
print("執行結果:", res.json()['message'])
self.assertin("the email has been registered", res.json()['message'])
# 測試用例 - 無效的郵箱格式去註冊
def test_register_invalid_email(self):
# 傳送請求
params =
res = requests.post(self.url,params)
# 斷言
print("執行結果:", res.json()['message'])
self.assertin("valid email", res.json()['message'])
if __name__ == '__main__': # 從當前模組執行
unittest.main()
testsuite()載入測試用例,建立乙個例項, testsuit的父類是basetestsuite
生成html測試報告
2.在run.py中匯入該模組
3.執行指令碼,會在指定的資料夾下生成測試報告.html ,用瀏覽器開啟即可檢視
import unittest
import htmltestrunnernew # 匯入用於生成測試報告
from common import project_path # 讀取檔案路徑
from common.test_register import testregister # 匯入測試類
suite=unittest.testsuite()
# 1. 載入測試用例:把測試用例放到測試套件suite裡面
suite.addtest(testregister('test_register_normal'))
suite.addtest(testregister('test_register_existing'))
suite.addtest(testregister('test_register_invalid_email'))
# 2.執行測試集, 並生成html測試報告
介面測試 unittest
測試用例 test case 乙個完整的測試過程,特點的輸入得到特定的輸出,並對輸出進行校驗 測試裝置 test fixture 測試部件,測試執行前的環境準備部件,測試執行部件,測試完成後的環境清理部件 測試套件 test suite 測試用例集 測試執行 test runner 測試執行,並生成...
介面自動化之unittest初探
usr bin python3 coding utf 8 time 2018 12 7 11 03 author yosef 夜雨聲煩 email wurz529 foxmail.com file model.py software pycharm community edition unittes...
介面自動化 unittest
unittest unittest框架會把以test 開頭的例項方法識別為用例,同時會自動執行 如果不是test 方法,那麼不會被當做測試用例執行 一 匯入unittest import unittest 系統內建模組,不需要安裝 二 定義類 classtestmulti unittest.test...