python+pytest自動(dòng)化測(cè)試函數(shù)測(cè)試類測(cè)試方法的封裝
前言
今天呢,筆者想和大家聊聊python+pytest接口自動(dòng)化中將代碼進(jìn)行封裝,只有將測(cè)試代碼進(jìn)行封裝,才能被測(cè)試框架識(shí)別執(zhí)行。
例如單個(gè)接口的請(qǐng)求代碼如下:
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)
假設(shè)我們需要將上面這段代碼編寫成測(cè)試框架能執(zhí)行的測(cè)試用例,僅僅只是這樣寫代碼顯然是不夠的,還需要進(jìn)行如下補(bǔ)充:
需要將代碼封裝成單元測(cè)試框架 (pytest或unittest) 能識(shí)別的測(cè)試函數(shù)或測(cè)試類,否則將不會(huì)被識(shí)別執(zhí)行。需要加上斷言,即結(jié)果與期望之間的對(duì)比,單元測(cè)試框架才能判定該用例執(zhí)行結(jié)果是否通過,結(jié)果==期望則說明通過,否則失敗。
python中函數(shù)以及類的封裝這里不做過多說明,這篇文章的目的是讓大家明白在接口自動(dòng)化測(cè)試中一般怎樣封裝測(cè)試代碼。
一、測(cè)試用例封裝的一般規(guī)則
測(cè)試用例的封裝有兩種,測(cè)試函數(shù)和測(cè)試類,封裝的一般規(guī)則如下:
一個(gè)測(cè)試函數(shù)對(duì)應(yīng)一條測(cè)試用例。測(cè)試類中可定義多個(gè)測(cè)試方法,一個(gè)測(cè)試方法對(duì)應(yīng)一條測(cè)試用例,測(cè)試類可以看作是一個(gè)測(cè)試用例集。pytest中測(cè)試函數(shù)或測(cè)試方法的命名必須以test開頭,測(cè)試類名必須以Test開頭。具體命名規(guī)則可以參考我之前的文章pytest(3)-測(cè)試命名規(guī)則。對(duì)于單接口的測(cè)試校驗(yàn),一個(gè)單接口的測(cè)試用例只包含一個(gè)接口請(qǐng)求,即將一個(gè)接口請(qǐng)求封裝成一個(gè)測(cè)試函數(shù)或測(cè)試方法。對(duì)于場(chǎng)景(多接口) 的測(cè)試校驗(yàn),一條場(chǎng)景測(cè)試用例需請(qǐng)求多個(gè)接口,因此需要將多個(gè)接口請(qǐng)求封裝在同一個(gè)測(cè)試函數(shù)或方法中。一般封裝一個(gè)接口的正向校驗(yàn)、異常校驗(yàn)封裝成不同的方法,并封裝在同一個(gè)測(cè)試類中。如定義一個(gè)登陸的測(cè)試類,正確用戶名、密碼請(qǐng)求封裝成一個(gè)方法 (即一條測(cè)試用例),正確用戶名、錯(cuò)誤密碼請(qǐng)求封裝成另一個(gè)方法 (即另一條測(cè)試用例)。也可以將某個(gè)功能點(diǎn)或功能相關(guān)聯(lián)的接口用例封裝在同一個(gè)測(cè)試類中。比如個(gè)人中心涉及到的接口,可以封裝在同一個(gè)測(cè)試類中二、測(cè)試函數(shù)的封裝
一般而言,一個(gè)測(cè)試函數(shù)對(duì)應(yīng)一條用例。上面的代碼編寫成一條測(cè)試用例,示例如下:
強(qiáng)調(diào),pytest中測(cè)試函數(shù)命名必須以test開頭,如test_get_home。
三、測(cè)試類/方法的封裝
一個(gè)測(cè)試類相當(dāng)于一個(gè)測(cè)試用例集,類中的每個(gè)方法對(duì)應(yīng)一條測(cè)試用例。以登錄接口為例,封裝成測(cè)試類,示例如下:
強(qiáng)調(diào),pytest中測(cè)試類命名需要以Test開頭,如TestLogin,且測(cè)試類中不能有init方法。測(cè)試類中測(cè)試方法必須以test開頭,如test_login_normal。
四、示例代碼
pytest中可以使用命令行或者使用代碼方式即 pytest.main() 執(zhí)行用例,具體可參考文章pytest(1)-簡(jiǎn)介。
完整的示例代碼如下:
import requests import pytest import json def test_get_home(): ''' 請(qǐng)求首頁接口 :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) # 斷言,判斷返回結(jié)果的code是否等于200,當(dāng)然實(shí)際接口測(cè)試中一般返回結(jié)果中還會(huì)有別的字段需要斷言 assert res.status_code == 200 class TestLogin: ''' 登錄接口校驗(yàn) ''' 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): '''正確用戶名、錯(cuò)誤密碼登錄''' 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()
總結(jié)
- 測(cè)試函數(shù)、測(cè)試類/測(cè)試方法的封裝,其實(shí)不管是什么單元測(cè)試框架,遵循的方式都一樣。
- 而在命名方式上各有自己的要求,比如pytest與unittest中測(cè)試命名方法有一定的區(qū)別。
- 把一個(gè)有自己斷言的函數(shù)或方法看成是一條測(cè)試用例,那么測(cè)試類其實(shí)就是一個(gè)含有一條或者多條測(cè)試用例的測(cè)試用例集,類中的每個(gè)方法對(duì)應(yīng)一條測(cè)試用例。
- 一個(gè)測(cè)試類中放置哪些測(cè)試方法,換句話說一個(gè)測(cè)試用例集中應(yīng)該包含哪些測(cè)試用例,這個(gè)可以按照項(xiàng)目自身情況而定,也可按照測(cè)試人員自己的想法而定,主旨就是要清晰明了
到此這篇關(guān)于python+pytest自動(dòng)化測(cè)試函數(shù)測(cè)試類測(cè)試方法的封裝的文章就介紹到這了,更多相關(guān)python測(cè)試函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Pytest 自動(dòng)化測(cè)試框架的使用
- pytest接口自動(dòng)化測(cè)試框架搭建的全過程
- pytest自動(dòng)化測(cè)試數(shù)據(jù)驅(qū)動(dòng)yaml/excel/csv/json
- Pytest+Yaml+Excel?接口自動(dòng)化測(cè)試框架的實(shí)現(xiàn)示例
- 淺談基于Pytest框架的自動(dòng)化測(cè)試開發(fā)實(shí)踐
- Python自動(dòng)化測(cè)試框架pytest的詳解安裝與運(yùn)行
- 自動(dòng)化測(cè)試Pytest單元測(cè)試框架的基本介紹
- python使用pytest接口自動(dòng)化測(cè)試的使用
- Pytest接口自動(dòng)化測(cè)試框架搭建模板
- 詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試
- Pytest自動(dòng)化測(cè)試的具體使用
相關(guān)文章
Python代碼一鍵轉(zhuǎn)Jar包及Java調(diào)用Python新姿勢(shì)
這篇文章主要介紹了Python一鍵轉(zhuǎn)Jar包,Java調(diào)用Python新姿勢(shì),本文通過截圖實(shí)例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn)
本文主要介紹了matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03python六種基本數(shù)據(jù)類型及常用函數(shù)展示
這篇文章主要為大家介紹了python六種基本數(shù)據(jù)類型及常用函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11Linux安裝Python3如何和系統(tǒng)自帶的Python2并存
這篇文章主要介紹了Linux安裝Python3如何和系統(tǒng)自帶的Python2并存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python Print實(shí)現(xiàn)在輸出中插入變量的例子
今天小編就為大家分享一篇Python Print實(shí)現(xiàn)在輸出中插入變量的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例
今天小編就為大家分享一篇pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01Pycharm導(dǎo)入anaconda環(huán)境的教程圖解
這篇文章主要介紹了Pycharm導(dǎo)入anaconda環(huán)境的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07pytorch?實(shí)現(xiàn)情感分類問題小結(jié)
本文主要介紹了pytorch?實(shí)現(xiàn)情感分類問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02