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()