Unittest之介面實戰編

2021-10-06 20:35:04 字數 2946 閱讀 6388

為什麼要使用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...