pytest官方文檔解讀fixtures
在深入了解fixture之前,讓我們先看看什么是測(cè)試。
一、測(cè)試的構(gòu)成
其實(shí)說(shuō)白了,測(cè)試就是在特定的環(huán)境、特定的場(chǎng)景下、執(zhí)行特定的行為,然后確認(rèn)結(jié)果與期望的是否一致。
就拿最常見(jiàn)的登錄來(lái)說(shuō),完成一次正常的登錄場(chǎng)景,需要可用的測(cè)試環(huán)境,可以正常登錄的賬號(hào)和密碼。然后,用這個(gè)賬號(hào)密碼進(jìn)行登錄操作,結(jié)果登錄成功,符合這次正常登錄場(chǎng)景的預(yù)期結(jié)果,測(cè)試完成。
這樣看來(lái),通常就可以把測(cè)試分為4個(gè)步驟:
- Arrange
- Act
- Assert
- Cleanup
Arrange
,可以理解為 除了執(zhí)行測(cè)試之外的任何事情。比如上面例子中,我得有個(gè)可用的測(cè)試環(huán)境跟可用的賬號(hào)密碼,這些都要事先準(zhǔn)備好。此外,還有可能是:?jiǎn)?dòng)/終止服務(wù)、將記錄輸入數(shù)據(jù)庫(kù)、定義要查詢(xún)的URL、為還不存在的用戶(hù)生成一些憑據(jù)等等。
總之,就是為了能夠進(jìn)行測(cè)試要準(zhǔn)備好的事情。
Act
,相比準(zhǔn)備前置環(huán)境,Act做的事情就相對(duì)單一些,其實(shí)就是開(kāi)始測(cè)試動(dòng)作。比如,接口測(cè)試?yán)?,調(diào)用被測(cè)試的api接口。
Assert
,Assert是我們查看結(jié)果的地方,看看是否像我們預(yù)期的那樣。比如接口請(qǐng)求成功后,數(shù)據(jù)的接口會(huì)返回“success”,assert status == "success"。
Cleanup
,在測(cè)試結(jié)束后,做清理工作,為了其他的測(cè)試不會(huì)意外的受到本次測(cè)試的影響。比如,測(cè)試之前我插入了一條測(cè)試數(shù)據(jù),測(cè)試完后,我把它刪掉。
總得來(lái)說(shuō),測(cè)試就是Act+Assert,而其他要安排的事情,放在Arrange里。
二、回到fixtures本身
而在pytest中,fixtures就是來(lái)做Arrange的事情。當(dāng)然了,fixture也不局限于此,如果測(cè)試足夠復(fù)雜的話(huà),不妨也可以在里面進(jìn)行act的事情。
把一個(gè)普通的函數(shù)變成fixtures非常簡(jiǎn)單,只要加上@pytest.fixture這個(gè)裝飾就成:
import pytest class Fruit: def __init__(self, name): self.name = name def __eq__(self, other): return self.name == other.name @pytest.fixture def my_fruit(): # 這里是一個(gè)fixture,返回了一個(gè)Fruit對(duì)象,名字叫蘋(píng)果 return Fruit("蘋(píng)果") @pytest.fixture def fruit_basket(my_fruit): # 這里是另一個(gè)fixture,同樣聲明一個(gè)Fruit對(duì)象,名字叫香蕉。 # 然后在這個(gè)fixture中又傳入了上一個(gè)fixture:my_fruit # 最后把最終的返回裝到一個(gè)列表[]里,返回 return [Fruit("香蕉"), my_fruit] def test_my_fruit_in_basket(my_fruit, fruit_basket): # 這是一個(gè)測(cè)試函數(shù),可以使用多個(gè)fixture assert my_fruit in fruit_basket
上面的代碼體現(xiàn)了fixtures的2個(gè)重要特性:
- 測(cè)試函數(shù)可以使用多個(gè)fixture
- fixture本身還可以使用其他的fixture
接下來(lái),我將繼續(xù)跟著官方文檔解讀fixture的特點(diǎn)。
以上就是pytest官方文檔解讀fixtures的詳細(xì)內(nèi)容,更多關(guān)于pytest解讀fixtures的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- pytest解讀fixtures中yield與addfinalizer區(qū)別
- pytest解讀fixtures之Teardown處理yield和addfinalizer方案
- pytest官方文檔解讀fixtures的調(diào)用方式
- pytest官方文檔解讀fixtures的autouse
- pytest解讀一次請(qǐng)求多個(gè)fixtures及多次請(qǐng)求
- pytest官方文檔解讀fixtures調(diào)用fixtures及fixture復(fù)用性
- pytest解讀fixture有效性及跨文件共享fixtures
- pytest?fixtures函數(shù)及測(cè)試函數(shù)的參數(shù)化解讀
- pytest fixtures裝飾器的使用和如何控制用例的執(zhí)行順序
- Pytest中Fixtures的高級(jí)用法
相關(guān)文章
python實(shí)現(xiàn)批量改文件名稱(chēng)的方法
這篇文章主要介紹了python實(shí)現(xiàn)批量改文件名稱(chēng)的方法,涉及Python中os模塊rename方法的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05python2 與 python3 實(shí)現(xiàn)共存的方法
這篇文章主要介紹了python2 與 python3 實(shí)現(xiàn)共存的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07python實(shí)現(xiàn)html轉(zhuǎn)ubb代碼(html2ubb)
這篇文章主要介紹了python實(shí)現(xiàn)html轉(zhuǎn)ubb代碼(html2ubb),使用正則表達(dá)式寫(xiě)的一個(gè)函數(shù),需要的朋友可以參考下2014-07-07python網(wǎng)絡(luò)爬蟲(chóng)selenium打開(kāi)多窗口與切換頁(yè)面的實(shí)現(xiàn)
本文主要介紹了python網(wǎng)絡(luò)爬蟲(chóng)selenium打開(kāi)多窗口與切換頁(yè)面的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Python使用turtle繪制有趣的龍年祝福動(dòng)畫(huà)
這篇文章主要介紹了Python的內(nèi)置庫(kù)——小海龜(turtle),它是一個(gè)非常實(shí)用的繪畫(huà)工具,不僅可以幫助我們繪制圖形,還能讓我們查看整個(gè)繪畫(huà)過(guò)程,下面我們就來(lái)看看如何使用turtle繪制有趣的龍年祝福動(dòng)畫(huà)吧2024-01-01Pandas實(shí)現(xiàn)數(shù)據(jù)拼接的操作方法詳解
Python處理大規(guī)模數(shù)據(jù)集的時(shí)候經(jīng)常需要使用到合并、鏈接的方式進(jìn)行數(shù)據(jù)集的整合,本文為大家主要介紹了.merge()、?.join()?和?.concat()?三種方法,感興趣的可以了解一下2022-04-04M1芯片Mac上Anaconda的暫時(shí)替代(miniforge)
這篇文章主要介紹了M1芯片Mac上Anaconda的暫時(shí)替代(miniforge),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03python線(xiàn)程信號(hào)量semaphore使用解析
這篇文章主要介紹了python線(xiàn)程信號(hào)量semaphore使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11快速解決cv2.imread()讀取圖像為BGR的問(wèn)題
這篇文章主要介紹了快速解決cv2.imread()讀取圖像為BGR的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03通過(guò)代碼實(shí)例展示Python中列表生成式的用法
這篇文章主要介紹了通過(guò)代碼實(shí)例展示Python中列表生成式的用法,包括找出質(zhì)數(shù)、算平方數(shù)等基本用法,需要的朋友可以參考下2015-03-03