pytest學習指南(三) fixture基本使用

2022-08-19 01:45:09 字數 1928 閱讀 4753

自動化測試本質屬於軟體測試活動中的一種方法,更多的是替代手工測試執行過程中重複的工作。所以自動測試和手工測試最大的區別在於執行測試用例的方式不一樣。

在執行測試用例前往往需要進行環境的準備。

在unittest中一般通過 setup與teardown來進行用例前的環境準備和用例後的環境銷毀。而在pytest中還有另外一種方式——fixture。與setup和teardown相比,fixture使用起來更加靈活,更加炫酷。

import

pytest

def test_2(aa):        #選擇執行那個fixture

assert 2==2

print("我是測試用例")

@pytest.fixture()

def aa():

print("先執行我")

yield #類似分隔符號 yield 上面的**表示用例執行前 下面的表示用例執行之後

print("執行完用例後再執行我")

@pytest.fixture()

def bb():

print("執行我把")

if

__name__ == '

__main__':

pytest.main(["-s

"])

conftest.py檔案

cimport

pytest

@pytest.fixture

#宣告它下面的函式是乙個pytest的前置後置

defaa():

print("

先執行我")

yield

print("

執行完用例後再執行我")

@pytest.fixture

defbb():

print("

執行我把

")

test_demo.py檔案

@pytest.mark.usefixtures("aa")  #表示呼叫名為aa的前置後置

def test_2():

assert 2==2

print("我是測試用例")

注意:當@pytest.mark.usefixtures放到class上指該類下所有用例都執行

為了提高**的復用性,我們在寫用例的時候,會用到函式,然後不同的用例去呼叫這個函式。比如登入操作,大部分的用例都會先登入,那就需要把這個登入單獨抽出來寫個函式,其他用例全部的呼叫這個登入函式就行。

但是登入的賬號不能寫死,有時候要用賬號1登入、執行用例1,用賬號2登入執行用例2,所以需要對函式傳參

@pytest.fixture()

deffix_init_chrome():

"""啟動/關閉 chrome瀏覽器

"""driver =webdriver.chrome()

driver.get(

'')driver.maximize_window()

yield

driver #yield 類似於函式的中的return關鍵字 執行前置條件後 會將driver變數返回出來

driver.quit()

import

pytest

@pytest.mark.usefixtures(

'fix_init_chrome

') #呼叫fix_init_chrome()環境

deftest_1(fix_init_chrome):                      #將該環境名作為引數來接受 返回值        

d=fix_init_chrome

d.get(

"")

《Git學習指南》學習筆記(三)

提交一般分未兩步 add和commit。add將修改存入到索引 index 或叫暫存區 staging area 中。status命令會出現三種可能的狀態 對於那些不希望被提交的修改,可以使用以下幾種方法 gitignore只會影響它所在目錄下的所有檔案。gitignore也只會影響當前還未交由gi...

Linux 學習指南

第乙個話題,嵌入式學習的路徑有哪些.這是乙個初學者常問的問題,也是初學者問嵌入式該如何入門的根源.我感覺有兩個方面,偏硬和偏軟.我不認為嵌入式開發軟體佔絕對比重,相反,軟硬體都懂,才是嵌入式高手所應該追求的,也是高手的必由之路.硬體道路 第一步 pcb設計,一般為開發板的電路裁減和擴充,由開發板原理...

Perl學習指南

首先,請考慮如下問題 如果你學過其他語言,那就可以從學習 perl 的語法開始 perl語言入門 或者是從 perl 的自帶文件。當你對 perl 的語法了解後,嘗試書中的例子,試著寫一些簡單的程式。很快你就會發現 perl 和你以前學過的語言類似。如果你是乙個有經驗的程式設計師,你可能直接會從讀程...