摘要:前言由于某測(cè)試平臺(tái)非常坑,導(dǎo)致創(chuàng)建了十個(gè)接口測(cè)試用例后便無法繼續(xù)創(chuàng)建測(cè)試用例。因此本文便利用的單元測(cè)試功能,完整實(shí)現(xiàn)了類似的接口黑盒測(cè)試功能。身邊用戶接口測(cè)試判斷返回列表中用戶是否只有十個(gè)最后,在函數(shù)中調(diào)用進(jìn)行測(cè)試。
前言
由于某測(cè)試平臺(tái)非???,導(dǎo)致創(chuàng)建了十個(gè)HTTP接口測(cè)試用例后便無法繼續(xù)創(chuàng)建測(cè)試用例。因此本文便利用Python的單元測(cè)試功能,完整實(shí)現(xiàn)了類似的接口黑盒測(cè)試功能。
測(cè)試環(huán)境Python3.6 Pycharm2017
本文默認(rèn)讀者擁有上述環(huán)境,不再闡述環(huán)境搭建問題
1.創(chuàng)建測(cè)試代碼文件,新建普通Python文件即可
2.復(fù)制如下代碼,本代碼大致原理會(huì)在下文講到,本代碼僅為示例,如需運(yùn)行,需要自行編寫相應(yīng)后端代碼
import unittest import requests import json URL = "http://xxx:9000" # 針對(duì)登錄模塊的測(cè)試類 class Login_Module(unittest.TestCase): # 獲取sessionID def get_session(self): r = requests.post(URL + "/login", data={"realPhone": "18890000000", "password": "123456"}) return json.loads(r.text)["data"] # 登錄接口測(cè)試 def test_login(self): r = requests.post(URL + "/login", data={"realPhone": "18890000000", "password": "123456"}) obj = json.loads(r.text) self.assertEqual(obj["code"], 0) # 判斷返回結(jié)果碼是否為0 # 身邊用戶接口測(cè)試 def test_near_user(self): r = requests.get(URL + "/nearuser", params={"sessionID": self.get_session()}) obj = json.loads(r.text) self.assertEqual(len(obj["data"]), 10) # 判斷返回列表中用戶是否只有十個(gè) if __name__ == "__main__": unittest.main()
3.新建PythonTest運(yùn)行環(huán)境(此步驟并非必須,只是為了更好的測(cè)試展示效果,需要配置)
此處需要注意target文件選擇包含測(cè)試代碼的文件
4.運(yùn)行單元測(cè)試,如果最終結(jié)果為綠色,代表所有測(cè)試樣例均已通過
如果是Python初始環(huán)境,那么很有可能不存在requests這個(gè)PythonHTTP請(qǐng)求庫(kù),需要打開CMD窗口,運(yùn)行
pip install requests -i https://pypi.douban.com/simple
如果還欠缺其他庫(kù),可按照格式,將requests替換掉即可
代碼解釋上述代碼包含一個(gè)測(cè)試類,這個(gè)測(cè)試類繼承了unittest.TestCase。這是一種python unittest的規(guī)范格式。
class Login_Module(unittest.TestCase):
下面第一個(gè)方法是作為工具方法存在的,由于方法名不以test開頭,因此在測(cè)試時(shí)該方法并不會(huì)作為測(cè)試方法參與測(cè)試,但是可以被其他測(cè)試方法調(diào)用。
這個(gè)方法的主要目的是獲取sessionID,在我的項(xiàng)目邏輯中存在sessionID這樣一個(gè)標(biāo)識(shí)符,用來表示用戶的身份信息。(類似于WEB開發(fā)中的Session)
# 獲取sessionID def get_session(self): r = requests.post(URL + "/login", data={"realPhone": "18890000000", "password": "123456"}) return json.loads(r.text)["data"]
此處的重點(diǎn)是如下兩個(gè)函數(shù)
#這段代碼post代表post方法,post函數(shù)的第一個(gè)參數(shù)代表接口URL地址,第二個(gè)參數(shù)代表數(shù)據(jù)信息 requests.post(URL + "/login", data={"realPhone": "18890000000", "password": "123456"}) #這段代碼loads代表將返回的相應(yīng)字符串轉(zhuǎn)化為python字典數(shù)據(jù)類型,然后["data"]就可以取出屬性為data的數(shù)據(jù) return json.loads(r.text)["data"]
在上述的過程中,發(fā)現(xiàn)需要知道相應(yīng)信息的結(jié)構(gòu)才能更好地進(jìn)行測(cè)試,但是由于接口不完善,有時(shí)候可能無法得到完整的接口信息,這時(shí)候就需要使用print函數(shù)自行打印接口返回信息
print(json.loads(r.text))
然后看下面的第二個(gè)函數(shù),這個(gè)函數(shù)主要和第一個(gè)函數(shù)相同,只是有一點(diǎn)不同,這個(gè)函數(shù)通過assertEqual進(jìn)行了斷言,如果斷言成功,則繼續(xù)執(zhí)行。如果斷言失敗,則會(huì)停止執(zhí)行,輸出該測(cè)試用例的相應(yīng)信息。
# 登錄接口測(cè)試 def test_login(self): r = requests.post(URL + "/login", data={"realPhone": "18890000000", "password": "123456"}) obj = json.loads(r.text) self.assertEqual(obj["code"], 0) # 判斷返回結(jié)果碼是否為0
接下來看第三個(gè)函數(shù),這個(gè)函數(shù)的特色在于這個(gè)函數(shù)所對(duì)應(yīng)的接口的請(qǐng)求方式不是POST而是GET,針對(duì)GET請(qǐng)求,大體上方式還是一致的,只是數(shù)據(jù)參數(shù)名由data變成了params。
# 身邊用戶接口測(cè)試 def test_near_user(self): r = requests.get(URL + "/nearuser", params={"sessionID": self.get_session()}) obj = json.loads(r.text) self.assertEqual(len(obj["data"]), 10) # 判斷返回列表中用戶是否只有十個(gè)
最后,在main函數(shù)中調(diào)用unittest.main()進(jìn)行測(cè)試。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/8816.html
摘要:前言由于某測(cè)試平臺(tái)非???,導(dǎo)致創(chuàng)建了十個(gè)接口測(cè)試用例后便無法繼續(xù)創(chuàng)建測(cè)試用例。因此本文便利用的單元測(cè)試功能,完整實(shí)現(xiàn)了類似的接口黑盒測(cè)試功能。身邊用戶接口測(cè)試判斷返回列表中用戶是否只有十個(gè)最后,在函數(shù)中調(diào)用進(jìn)行測(cè)試。 前言 由于某測(cè)試平臺(tái)非常坑,導(dǎo)致創(chuàng)建了十個(gè)HTTP接口測(cè)試用例后便無法繼續(xù)創(chuàng)建測(cè)試用例。因此本文便利用Python的單元測(cè)試功能,完整實(shí)現(xiàn)了類似的接口黑盒測(cè)試功能。 測(cè)試...
摘要:配置觸發(fā)器的函數(shù)可以通過請(qǐng)求觸發(fā)執(zhí)行。目前函數(shù)計(jì)算的觸發(fā)器支持等編程語言,并不同程度支持對(duì)應(yīng)的框架,具體內(nèi)容請(qǐng)參看參考文檔。編寫處理函數(shù)編寫處理函數(shù)的時(shí)候一定注意配置了觸發(fā)器的函數(shù)接口與普通函數(shù)接口不同。 摘要: Web 應(yīng)用(Serverless web backend) 是函數(shù)計(jì)算很重要的一個(gè)使用場(chǎng)景。相比于傳統(tǒng)的在服務(wù)器上搭建 web 應(yīng)用,函數(shù)計(jì)算無需您管理服務(wù)器等基礎(chǔ)設(shè)施,只...
摘要:由于蘋果原生蛋疼的協(xié)議致使本來很簡(jiǎn)單的個(gè)推送服務(wù)讓人望而卻步。直到蘋果最近的協(xié)議的出現(xiàn)才有所改善。如果推送失敗后蘋果的推送服務(wù)器會(huì)返回個(gè)錯(cuò)誤的信息。結(jié)語雖然通過使用來實(shí)現(xiàn)蘋果的推送服務(wù)是個(gè)比較簡(jiǎn)單的事情甚至?xí)X得比較枯燥無味的事情。 原文地址: http://52sox.com/python-use-h... 說起蘋果的推送,可能很多開發(fā)人員就開始頭疼了,因?yàn)閷?shí)現(xiàn)蘋果推送服務(wù)是1個(gè)比較...
摘要:頁(yè)面數(shù)據(jù)說明性能測(cè)試參數(shù)請(qǐng)求的類型,例如。當(dāng)前請(qǐng)求失敗的數(shù)量。中間值,單位毫秒,一半的服務(wù)器響應(yīng)時(shí)間低于該值,而另一半高于該值。平均值,單位毫秒,所有請(qǐng)求的平均響應(yīng)時(shí)間。單個(gè)請(qǐng)求的大小,單位字節(jié)。 寫在前面:此文章在通過學(xué)習(xí)、實(shí)踐網(wǎng)絡(luò)資料寫成,相關(guān)鏈接在文章結(jié)尾。 一、簡(jiǎn)介 1、locust是一種可用python編寫腳本的開源壓測(cè)工具(實(shí)質(zhì)是由python下的一些庫(kù)構(gòu)成),可定義用戶行...
閱讀 908·2021-10-13 09:39
閱讀 1498·2021-10-11 10:57
閱讀 2606·2019-08-26 13:53
閱讀 2551·2019-08-26 12:23
閱讀 3703·2019-08-23 18:30
閱讀 3761·2019-08-23 18:08
閱讀 2539·2019-08-23 18:04
閱讀 2970·2019-08-23 16:28