成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Python的HTTP接口測試

longshengwang / 1299人閱讀

摘要:前言由于某測試平臺非???,導(dǎo)致創(chuàng)建了十個接口測試用例后便無法繼續(xù)創(chuàng)建測試用例。因此本文便利用的單元測試功能,完整實現(xiàn)了類似的接口黑盒測試功能。身邊用戶接口測試判斷返回列表中用戶是否只有十個最后,在函數(shù)中調(diào)用進行測試。

前言

由于某測試平臺非??樱瑢?dǎo)致創(chuàng)建了十個HTTP接口測試用例后便無法繼續(xù)創(chuàng)建測試用例。因此本文便利用Python的單元測試功能,完整實現(xiàn)了類似的接口黑盒測試功能。

測試環(huán)境

Python3.6 Pycharm2017
本文默認讀者擁有上述環(huán)境,不再闡述環(huán)境搭建問題

測試流程

1.創(chuàng)建測試代碼文件,新建普通Python文件即可

2.復(fù)制如下代碼,本代碼大致原理會在下文講到,本代碼僅為示例,如需運行,需要自行編寫相應(yīng)后端代碼

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)  # 判斷返回結(jié)果碼是否為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運行環(huán)境(此步驟并非必須,只是為了更好的測試展示效果,需要配置)

此處需要注意target文件選擇包含測試代碼的文件

4.運行單元測試,如果最終結(jié)果為綠色,代表所有測試樣例均已通過

注意事項

如果是Python初始環(huán)境,那么很有可能不存在requests這個PythonHTTP請求庫,需要打開CMD窗口,運行

pip install requests -i https://pypi.douban.com/simple

如果還欠缺其他庫,可按照格式,將requests替換掉即可

代碼解釋

上述代碼包含一個測試類,這個測試類繼承了unittest.TestCase。這是一種python unittest的規(guī)范格式。

class Login_Module(unittest.TestCase):

下面第一個方法是作為工具方法存在的,由于方法名不以test開頭,因此在測試時該方法并不會作為測試方法參與測試,但是可以被其他測試方法調(diào)用。
這個方法的主要目的是獲取sessionID,在我的項目邏輯中存在sessionID這樣一個標識符,用來表示用戶的身份信息。(類似于WEB開發(fā)中的Session)

    # 獲取sessionID
    def get_session(self):
        r = requests.post(URL + "/login",
                          data={"realPhone": "18890000000", "password": "123456"})
        return json.loads(r.text)["data"]

此處的重點是如下兩個函數(shù)

#這段代碼post代表post方法,post函數(shù)的第一個參數(shù)代表接口URL地址,第二個參數(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)才能更好地進行測試,但是由于接口不完善,有時候可能無法得到完整的接口信息,這時候就需要使用print函數(shù)自行打印接口返回信息

print(json.loads(r.text))

然后看下面的第二個函數(shù),這個函數(shù)主要和第一個函數(shù)相同,只是有一點不同,這個函數(shù)通過assertEqual進行了斷言,如果斷言成功,則繼續(xù)執(zhí)行。如果斷言失敗,則會停止執(zhí)行,輸出該測試用例的相應(yīng)信息。

    # 登錄接口測試
    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

接下來看第三個函數(shù),這個函數(shù)的特色在于這個函數(shù)所對應(yīng)的接口的請求方式不是POST而是GET,針對GET請求,大體上方式還是一致的,只是數(shù)據(jù)參數(shù)名由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函數(shù)中調(diào)用unittest.main()進行測試。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41695.html

相關(guān)文章

  • 基于PythonHTTP接口測試

    摘要:前言由于某測試平臺非常坑,導(dǎo)致創(chuàng)建了十個接口測試用例后便無法繼續(xù)創(chuàng)建測試用例。因此本文便利用的單元測試功能,完整實現(xiàn)了類似的接口黑盒測試功能。身邊用戶接口測試判斷返回列表中用戶是否只有十個最后,在函數(shù)中調(diào)用進行測試。 前言 由于某測試平臺非常坑,導(dǎo)致創(chuàng)建了十個HTTP接口測試用例后便無法繼續(xù)創(chuàng)建測試用例。因此本文便利用Python的單元測試功能,完整實現(xiàn)了類似的接口黑盒測試功能。 測試...

    Hanks10100 評論0 收藏0
  • 函數(shù)計算搭建 Serverless Web 應(yīng)用(一)- HTTP 觸發(fā)器

    摘要:配置觸發(fā)器的函數(shù)可以通過請求觸發(fā)執(zhí)行。目前函數(shù)計算的觸發(fā)器支持等編程語言,并不同程度支持對應(yīng)的框架,具體內(nèi)容請參看參考文檔。編寫處理函數(shù)編寫處理函數(shù)的時候一定注意配置了觸發(fā)器的函數(shù)接口與普通函數(shù)接口不同。 摘要: Web 應(yīng)用(Serverless web backend) 是函數(shù)計算很重要的一個使用場景。相比于傳統(tǒng)的在服務(wù)器上搭建 web 應(yīng)用,函數(shù)計算無需您管理服務(wù)器等基礎(chǔ)設(shè)施,只...

    ad6623 評論0 收藏0
  • Python使用HTTP2實現(xiàn)蘋果原生推送

    摘要:由于蘋果原生蛋疼的協(xié)議致使本來很簡單的個推送服務(wù)讓人望而卻步。直到蘋果最近的協(xié)議的出現(xiàn)才有所改善。如果推送失敗后蘋果的推送服務(wù)器會返回個錯誤的信息。結(jié)語雖然通過使用來實現(xiàn)蘋果的推送服務(wù)是個比較簡單的事情甚至會覺得比較枯燥無味的事情。 原文地址: http://52sox.com/python-use-h... 說起蘋果的推送,可能很多開發(fā)人員就開始頭疼了,因為實現(xiàn)蘋果推送服務(wù)是1個比較...

    The question 評論0 收藏0
  • 【壓力測試】Mac下進行l(wèi)ocust配置和測試

    摘要:頁面數(shù)據(jù)說明性能測試參數(shù)請求的類型,例如。當前請求失敗的數(shù)量。中間值,單位毫秒,一半的服務(wù)器響應(yīng)時間低于該值,而另一半高于該值。平均值,單位毫秒,所有請求的平均響應(yīng)時間。單個請求的大小,單位字節(jié)。 寫在前面:此文章在通過學(xué)習、實踐網(wǎng)絡(luò)資料寫成,相關(guān)鏈接在文章結(jié)尾。 一、簡介 1、locust是一種可用python編寫腳本的開源壓測工具(實質(zhì)是由python下的一些庫構(gòu)成),可定義用戶行...

    channg 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<