python之unittest框架實現接口測試實例html
接口測試的方法有不少種,具體到工具備postman,jmeter,fiddler等,可是工具的侷限性是測試數據的組織較差,接口的返回工具的判斷有限,工具也不能很好的生成可視化的報告和結果數據,使用代碼來進行接口測試就便於進行更多的拓展和結果輸出。python
首先安裝Requests庫(須要安裝好python環境)
在cmd窗口運行以下命令:web
pip install requestsjson
requests功能特性
Requests 徹底知足今日 web 的需求。瀏覽器
Keep-Alive & 鏈接池
國際化域名和 URL
帶持久 Cookie 的會話
瀏覽器式的 SSL 認證
自動內容解碼
基本/摘要式的身份認證
優雅的 key/value Cookie
自動解壓
Unicode 響應體
HTTP(S) 代理支持
文件分塊上傳
流下載
鏈接超時
分塊請求
支持 .netrc
Requests 支持 Python 2.6—2.7以及3.3—3.7,並且能在 PyPy 下完美運行。app
具體用法和介紹可參考這個地址http://cn.python-requests.org/zh_CN/latest/框架
構造請求
首先得熟悉完整的http請求的三部分構成:工具
請求行(url)post
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()
原文出處:https://www.cnblogs.com/hellotesters/p/10725565.html