python之unittest框架實現接口測試實例

python之unittest框架實現接口測試實例python


接口測試的方法有不少種,具體到工具備postman,jmeter,fiddler等,可是工具的侷限性是測試數據的組織較差,接口的返回工具的判斷有限,工具也不能很好的生成可視化的報告和結果數據,使用代碼來進行接口測試就便於進行更多的拓展和結果輸出。web

首先安裝Requests庫(須要安裝好python環境)
在cmd窗口運行以下命令:json

pip install requests瀏覽器

requests功能特性
Requests 徹底知足今日 web 的需求。app

Keep-Alive & 鏈接池
國際化域名和 URL
帶持久 Cookie 的會話
瀏覽器式的 SSL 認證
自動內容解碼
基本/摘要式的身份認證
優雅的 key/value Cookie
自動解壓
Unicode 響應體
HTTP(S) 代理支持
文件分塊上傳
流下載
鏈接超時
分塊請求
支持 .netrc
Requests 支持 Python 2.6—2.7以及3.3—3.7,並且能在 PyPy 下完美運行。框架

具體用法和介紹可參考這個地址http://cn.python-requests.org/zh_CN/latest/工具

 

構造請求
首先得熟悉完整的http請求的三部分構成:post

請求行(url)單元測試

http://192.168.1.1:8080/test/cm.contact.getContactMembersFromServer/global學習

請求頭(headers)

Content-Type’: ‘application/json; charset=UTF-8’,「authorization」:"78646a6178646a613153593338076183

請求體(params)

{「account」: 「123456」, 「Type」: 「0」}

 

unittest框架介紹
unittest框架是python內置的單元測試框架,它能編寫組織用例、執行用例,還可輸出測試報告等。
使用unittest前須要瞭解該框架的五個概念:即test case,test suite,testLoader,test runner,test fixture,你們能夠自行百度學習相關概念。

它具備以下優勢:

使用斷言判斷返回布爾值來判斷指望值和實際值的差別。
能夠構建共同的初始化變量或實例。
框架結構能夠組織用例批量運行。

複製代碼
import unittest
import requests
import json

#定義測試類InterfaceTest,父類爲unittest.TestCase。
#繼承unittest.TestCase的setUp和tearDown方法。
#繼承承unittest.TestCase的各類斷言方法。

class InterfaceTest(unittest.TestCase):

#使用setUp()方法執行初始化工做。
    def setUp(self):
        self.url = "http://192.168.1.1:8080/test/v2.cm.contact.getContactMembersFromServer/global"
        self.headers = { 'Content-Type': 'application/json; charset=UTF-8',"authorization":"78646a6178646a613153593338076183"}
    
#tearDown()方法結束測試
    def tearDown(self):
        print("測試結束了")
    
#定義測試用例,必須以「test_」開頭命名。
    def test01(self):
        json01 = {"userAccount": "123456", "queryType": "0"}
        
        #將字典轉換成字符串
        jsonString01 = json.dumps(json01)
        r = requests.post(self.url, data=jsonString01, headers=self.headers)

        print("獲取的響應結果json類型", r.text)
        print("獲取的響應狀態碼", r.status_code)
        print("獲取的響應頭", r.headers['Content-Type'])

        # 響應的json數據轉換爲可被python識別的數據類型
        json_r = r.json()
        print(json_r)
        self.assertEqual(r.status_code,200)
        self.assertIn("test01",r.text)

if __name__=='__main__':
    #unittest.main()方法會搜索該模塊下全部以test開頭的測試用例方法,並自動執行它們。
    unittest.main()
相關文章
相關標籤/搜索