Python + Requests + Unittest接口自動化測試實例分析
本文實例講述了Python + Requests + Unittest接口自動化測試。分享給大家供大家參考,具體如下:
1. 介紹下python的requests模塊
Python Requests快速入門 :http://cn.python-requests.org/zh_CN/latest/
想必會Python基礎的小伙伴們一看就懂了
2. Requests接口自動化測試:
2.1 如何利用這么利器進行接口測試,請看小demo:
# -*- coding:utf-8 -* import requests def test(): url = "http://120.24.239.**:9080/user/app/get_sys_time.do" #測試的接口url headers = {'content-type': 'application/json'} r = requests.get(url=url, headers=headers) return r.json() if __name__ == "__main__": test()
在進行接口測試的過程中對傳入的參數(shù)進行邊界值測試、錯誤推導測試、等價類測試等測試方法進行測試。有時安全性考慮,會在請求接口url上添加session的東東,這個時候不怕,直接把登錄接口返回碼中的session提取出來,放在post請求的header里,例如:
# -*- coding:utf-8 -* import requests def test(): url = "http://120.24.239.**:9080/user/app/login.do" #登錄的接口 headers = {'content-type': 'application/json'} r = requests.get(url=url, headers=headers) return r.json() def test_have_session(url): cookie = "JSESSIONID=" + "".join(test().get("JSESSIONID")) #利用登錄接口獲取JSESSIONID headers = {'content-type': 'application/xml', 'Cookie': cookie} r = requests.post(url, headers=headers) return r.json() if __name__ == "__main__": url = "" #測試的接口url test_have_session(url)
2.2 做完所有接口的接口測試后,就要編寫接口自動化了,不可能開發(fā)每次去修改接口你又得手動的去測試一遍,特別是產(chǎn)品上線了,需要到所有的接口進行一遍測試,這個時候有了接口自動化就方便多了,接下來看下一個縮減版的接口自動化測試demo:
# -*- coding:utf-8 -* # 測試報告郵件內(nèi)容 text = "" # 用例統(tǒng)計 num_success = 0 num_fail = 0 # 測試通過 def test_success(): global num_success num_success += 1 print_out(u"測試結(jié)果:通過\n") # 測試不通過 def test_fail(txt): global num_fail num_fail += 1 print_out(u"測試結(jié)果:不通過 \n錯誤信息: " + txt + "\n") # 郵件內(nèi)容寫入 & 客戶端輸出 def print_out(message): global text text += "\n" + message print message # 返回值判斷 def test_result(result, code): if result.get("status") == code: test_success() return "pass" else: txt = u"期望返回值:" + str(code) + u" 實際返回值:" + str(result.get("status")) test_fail(txt) return "fail"
def test_interface(): # 初始化測試起始時間 start_time = datetime.datetime.now() # 構(gòu)造測試集 suite = unittest.TestSuite() suite.addTest(MyTestSuite("test_login")) # 登陸 suite.addTest(MyTestSuite("test_employees")) # 員工管理 suite.addTest(MyTestSuite("test_department")) # 部門管理 suite.addTest(MyTestSuite("test_work_sys")) # 工作日歷管理 suite.addTest(MyTestSuite("test_holiday")) # 節(jié)假日管理 suite.addTest(MyTestSuite("test_queryAp")) # 智能終端管理 suite.addTest(MyTestSuite("test_edit_info")) # 企業(yè)信息管理 & 個人信息 suite.addTest(MyTestSuite("test_data")) # 每日數(shù)據(jù)報表 & 月度數(shù)據(jù)報表 # 執(zhí)行測試 runner = unittest.TextTestRunner() runner.run(suite) # 測試執(zhí)行時間計算 end_time = datetime.datetime.now() total_use_case = u"執(zhí)行用例總數(shù):" + str(num_success + num_fail) + \ u"\t通過數(shù):" + str(num_success) + \ u"\t不通過數(shù):" + str(num_fail) total_time = u"\t總共耗時:" + str((end_time-start_time).seconds) + u"秒" print_out(total_use_case + total_time) # 發(fā)生郵件測試報告 Send_email.send_email(text)
例子中缺失很多判斷按具體項目測試的接口去進行判斷,整體的框架是這樣子的,在接口很多的項目中,可以分文件進行編寫,方便后期接口測試用例的修改,在我現(xiàn)在公司的產(chǎn)品中總共有69個接口,將這69個接口我進行了分類去管理,如果需要將接口測試腳本放服務器去跑,需要添加try….except,將出現(xiàn)的錯誤信息報出來,利用smtplib發(fā)送錯誤信息到自己的郵箱就好了。
更多關于Python相關內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python使用正則表達式去除中文文本多余空格,保留英文之間空格方法詳解
這篇文章主要介紹了python使用正則表達式去除中文文本多余空格,保留英文之間空格方法詳解,需要的朋友可以參考下2020-02-02詳解四種Python中基本形態(tài)學濾波的實現(xiàn)
最基礎的形態(tài)學操作有四個,分別是腐蝕、膨脹、開計算和閉計算。這篇文章主要介紹了這四種形態(tài)學濾波的實現(xiàn),感興趣的小伙伴可以跟隨小編一起學習一下2023-04-04python 申請內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實例
今天小編就為大家分享一篇python 申請內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Android模擬器無法啟動,報錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ I
這篇文章主要介紹了Android模擬器無法啟動,報錯:Cannot set up guest memory ‘a(chǎn)ndroid_arm’ Invalid argument的解決方法,通過模擬器ram設置的調(diào)整予以解決,需要的朋友可以參考下2016-07-07在python中利用KNN實現(xiàn)對iris進行分類的方法
今天小編就為大家分享一篇在python中利用KNN實現(xiàn)對iris進行分類的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12