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