中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python+pytest自動化測試封裝怎么實現

發布時間:2022-06-24 09:19:42 來源:億速云 閱讀:370 作者:iii 欄目:開發技術

本篇內容介紹了“python+pytest自動化測試封裝怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

例如單個接口的請求代碼如下:

import requests
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
}
url = "https://mp.toutiao.com/profile_v4/"
res = requests.get(url=h_url, headers=headers)

假設我們需要將上面這段代碼編寫成測試框架能執行的測試用例,僅僅只是這樣寫代碼顯然是不夠的,還需要進行如下補充:

需要將代碼封裝成單元測試框架 (pytest或unittest) 能識別的測試函數或測試類,否則將不會被識別執行。需要加上斷言,即結果與期望之間的對比,單元測試框架才能判定該用例執行結果是否通過,結果==期望則說明通過,否則失敗。

python中函數以及類的封裝這里不做過多說明,這篇文章的目的是讓大家明白在接口自動化測試中一般怎樣封裝測試代碼

一、測試用例封裝的一般規則

測試用例的封裝有兩種,測試函數和測試類,封裝的一般規則如下:

一個測試函數對應一條測試用例。測試類中可定義多個測試方法,一個測試方法對應一條測試用例,測試類可以看作是一個測試用例集。pytest中測試函數或測試方法的命名必須以test開頭,測試類名必須以Test開頭。具體命名規則可以參考我之前的文章pytest(3)-測試命名規則。對于單接口的測試校驗,一個單接口的測試用例只包含一個接口請求,即將一個接口請求封裝成一個測試函數或測試方法。對于場景(多接口) 的測試校驗,一條場景測試用例需請求多個接口,因此需要將多個接口請求封裝在同一個測試函數或方法中。一般封裝一個接口的正向校驗、異常校驗封裝成不同的方法,并封裝在同一個測試類中。如定義一個登陸的測試類,正確用戶名、密碼請求封裝成一個方法 (即一條測試用例),正確用戶名、錯誤密碼請求封裝成另一個方法 (即另一條測試用例)。也可以將某個功能點或功能相關聯的接口用例封裝在同一個測試類中。比如個人中心涉及到的接口,可以封裝在同一個測試類中二、測試函數的封裝

一般而言,一個測試函數對應一條用例。上面的代碼編寫成一條測試用例,示例如下:

python+pytest自動化測試封裝怎么實現

 強調,pytest中測試函數命名必須以test開頭,如test_get_home。

三、測試類/方法的封裝

一個測試類相當于一個測試用例集,類中的每個方法對應一條測試用例。以登錄接口為例,封裝成測試類,示例如下:

python+pytest自動化測試封裝怎么實現

 強調,pytest中測試類命名需要以Test開頭,如TestLogin,且測試類中不能有init方法。測試類中測試方法必須以test開頭,如test_login_normal。

四、示例代碼

pytest中可以使用命令行或者使用代碼方式即 pytest.main() 執行用例,具體可參考文章pytest(1)-簡介。

完整的示例代碼如下:

import requests
import pytest
import json
def test_get_home():
    '''
    請求首頁接口
    :return:
    '''
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
    }
    url = "https://www.cnblogs.com/lfr0123/"
    res = requests.get(url=url, headers=headers)
    # 斷言,判斷返回結果的code是否等于200,當然實際接口測試中一般返回結果中還會有別的字段需要斷言
    assert res.status_code == 200
 
class TestLogin:
    '''
    登錄接口校驗
    '''
    url = "http://127.0.0.1:5000/login"
    headers = {"Content-Type": "application/json;charset=utf8"}
 
    def test_login_normal(self):
        '''正確用戶名、正確密碼登錄'''
        data = {
            "username": "AndyLiu",
            "password": "123456"
        }
        res = requests.post(url=self.url, json=data, headers=self.headers)
        # 斷言
        assert res.status_code == 200
        assert json.loads(res.text)["token"]
 
    def test_login_error(self):
        '''正確用戶名、錯誤密碼登錄'''
        data = {
            "username": "AndyLiu",
            "password": "111111"
        }
        res = requests.post(url=self.url, json=data, headers=self.headers)
        # 斷言
        assert res.status_code == 200
        assert not json.loads(res.text)["token"]
if __name__ == '__main__':
    pytest.main()

“python+pytest自動化測試封裝怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邹平县| 连平县| 娱乐| 江孜县| 德兴市| 唐海县| 罗定市| 怀安县| 柘城县| 平安县| 泊头市| 西乌珠穆沁旗| 六枝特区| 宁安市| 石嘴山市| 肇庆市| 高安市| 河东区| 莒南县| 银川市| 铁力市| 大余县| 咸丰县| 萨迦县| 仁怀市| 靖州| 乌审旗| 安溪县| 昌邑市| 平利县| 札达县| 德保县| 当阳市| 海宁市| 敖汉旗| 大关县| 潍坊市| 股票| 息烽县| 濮阳市| 泰来县|