Python + Requests + Unittest接口自動(dòng)化測(cè)試實(shí)例分析
本文實(shí)例講述了Python + Requests + Unittest接口自動(dòng)化測(cè)試。分享給大家供大家參考,具體如下:
1. 介紹下python的requests模塊
Python Requests快速入門 :http://cn.python-requests.org/zh_CN/latest/
想必會(huì)Python基礎(chǔ)的小伙伴們一看就懂了
2. Requests接口自動(dòng)化測(cè)試:
2.1 如何利用這么利器進(jìn)行接口測(cè)試,請(qǐng)看小demo:
# -*- coding:utf-8 -*
import requests
def test():
url = "http://120.24.239.**:9080/user/app/get_sys_time.do" #測(cè)試的接口url
headers = {'content-type': 'application/json'}
r = requests.get(url=url, headers=headers)
return r.json()
if __name__ == "__main__":
test()
在進(jìn)行接口測(cè)試的過(guò)程中對(duì)傳入的參數(shù)進(jìn)行邊界值測(cè)試、錯(cuò)誤推導(dǎo)測(cè)試、等價(jià)類測(cè)試等測(cè)試方法進(jìn)行測(cè)試。有時(shí)安全性考慮,會(huì)在請(qǐng)求接口url上添加session的東東,這個(gè)時(shí)候不怕,直接把登錄接口返回碼中的session提取出來(lái),放在post請(qǐng)求的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 = "" #測(cè)試的接口url
test_have_session(url)
2.2 做完所有接口的接口測(cè)試后,就要編寫接口自動(dòng)化了,不可能開(kāi)發(fā)每次去修改接口你又得手動(dòng)的去測(cè)試一遍,特別是產(chǎn)品上線了,需要到所有的接口進(jìn)行一遍測(cè)試,這個(gè)時(shí)候有了接口自動(dòng)化就方便多了,接下來(lái)看下一個(gè)縮減版的接口自動(dòng)化測(cè)試demo:
# -*- coding:utf-8 -*
# 測(cè)試報(bào)告郵件內(nèi)容
text = ""
# 用例統(tǒng)計(jì)
num_success = 0
num_fail = 0
# 測(cè)試通過(guò)
def test_success():
global num_success
num_success += 1
print_out(u"測(cè)試結(jié)果:通過(guò)\n")
# 測(cè)試不通過(guò)
def test_fail(txt):
global num_fail
num_fail += 1
print_out(u"測(cè)試結(jié)果:不通過(guò) \n錯(cuò)誤信息: " + 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" 實(shí)際返回值:" + str(result.get("status"))
test_fail(txt)
return "fail"

def test_interface():
# 初始化測(cè)試起始時(shí)間
start_time = datetime.datetime.now()
# 構(gòu)造測(cè)試集
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è)信息管理 & 個(gè)人信息
suite.addTest(MyTestSuite("test_data")) # 每日數(shù)據(jù)報(bào)表 & 月度數(shù)據(jù)報(bào)表
# 執(zhí)行測(cè)試
runner = unittest.TextTestRunner()
runner.run(suite)
# 測(cè)試執(zhí)行時(shí)間計(jì)算
end_time = datetime.datetime.now()
total_use_case = u"執(zhí)行用例總數(shù):" + str(num_success + num_fail) + \
u"\t通過(guò)數(shù):" + str(num_success) + \
u"\t不通過(guò)數(shù):" + str(num_fail)
total_time = u"\t總共耗時(shí):" + str((end_time-start_time).seconds) + u"秒"
print_out(total_use_case + total_time)
# 發(fā)生郵件測(cè)試報(bào)告
Send_email.send_email(text)
例子中缺失很多判斷按具體項(xiàng)目測(cè)試的接口去進(jìn)行判斷,整體的框架是這樣子的,在接口很多的項(xiàng)目中,可以分文件進(jìn)行編寫,方便后期接口測(cè)試用例的修改,在我現(xiàn)在公司的產(chǎn)品中總共有69個(gè)接口,將這69個(gè)接口我進(jìn)行了分類去管理,如果需要將接口測(cè)試腳本放服務(wù)器去跑,需要添加try….except,將出現(xiàn)的錯(cuò)誤信息報(bào)出來(lái),利用smtplib發(fā)送錯(cuò)誤信息到自己的郵箱就好了。
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Pandas數(shù)據(jù)分析固定時(shí)間點(diǎn)和時(shí)間差
這篇文章主要介紹了Pandas數(shù)據(jù)分析固定時(shí)間點(diǎn)和時(shí)間差,文章未日澳主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
Python實(shí)現(xiàn)簡(jiǎn)單的語(yǔ)音識(shí)別系統(tǒng)
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的語(yǔ)音識(shí)別系統(tǒng),具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Pandas?DataFrame添加一行數(shù)據(jù)的幾種方法
在處理數(shù)據(jù)分析和數(shù)據(jù)科學(xué)項(xiàng)目時(shí),經(jīng)常會(huì)使用到Python中的pandas庫(kù)來(lái)進(jìn)行數(shù)據(jù)操作和分析,其中DataFrame是pandas庫(kù)中最重要的數(shù)據(jù)結(jié)構(gòu)之一,這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame添加一行數(shù)據(jù)的幾種方法,需要的朋友可以參考下2024-08-08
Python的NumPy使用之?dāng)?shù)組過(guò)濾
這篇文章主要介紹了Python的NumPy使用之?dāng)?shù)組過(guò)濾,在 NumPy中,我們使用布爾索引列表來(lái)過(guò)濾數(shù)組布爾索引列表是與數(shù)組中的索引相對(duì)應(yīng)的布爾值列表,需要的朋友可以參考下2023-07-07
用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程
這篇文章主要介紹了用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程,包括單位格式轉(zhuǎn)換、分類匯總等基本操作,需要的朋友可以參考下2015-03-03
詳解Python NumPy中矩陣和通用函數(shù)的使用
在NumPy中,矩陣是ndarray的子類,與數(shù)學(xué)概念中的矩陣一樣,NumPy中的矩陣也是二維的,可以使用 mat 、 matrix 以及 bmat 函數(shù)來(lái)創(chuàng)建矩陣。本文將詳細(xì)講解NumPy中矩陣和通用函數(shù)的使用,感興趣的可以了解一下2022-06-06

