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

資訊專欄INFORMATION COLUMN

基于Python的HTTP接口測(cè)試

Hanks10100 / 1834人閱讀

摘要:前言由于某測(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)境搭建問題

測(cè)試流程

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è)試樣例均已通過

注意事項(xiàng)

如果是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

相關(guān)文章

  • 基于PythonHTTP接口測(cè)試

    摘要:前言由于某測(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è)試...

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

    摘要:配置觸發(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è)施,只...

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

    摘要:由于蘋果原生蛋疼的協(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è)比較...

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

    摘要:頁(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)成),可定義用戶行...

    channg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<