pytest---usefixtures簡單使用


  前面介紹的fixture都是通過函數的方式進行傳參的,如果遇到一個class中都需要傳入一個fixture,那一個個寫進函數中,太麻煩,今天安靜介紹一種方法,通過class直接傳入fixture

usefixtures

usefixtures是fixture用來標記class中的一個方法。用法結果相當於和setup和teardown的結果一樣。每個用例函數都會進行執行fixture中的前置內容和后置內容

#coding:utf-8

import pytest


@pytest.fixture()
def login():
    print('輸入用戶名,密碼。完成登錄')
    yield
    print('退出')

@pytest.mark.usefixtures('login')
class Test_01:

    def test_01(self):
        print('---用例01---')

    def test_02(self):
        print('---用例02---')

    def test_03(self):
        print('---用例03---')


if __name__ == '__main__':
    pytest.main(['-vs', 'test__01.py'])

通過執行結果可以發現,通過使用usefixture方法后,class下的每個用例都會執行前置和后置內容。

多個usefixture使用

如果我們需要對一個class中傳入多個fixture,我們就可以直接疊加2個usefixture方法,有2種寫法:

第一種:

直接在usefixture中進行加入另外的fixture方法名稱

#coding:utf-8

import pytest

@pytest.fixture()
def fun():
    print('這是fun的fixture方法')

@pytest.fixture()
def login():
    print('輸入用戶名,密碼。完成登錄')
    yield
    print('退出')


@pytest.mark.usefixtures('login','fun')
class Test_01:

    def test_01(self):
        print('---用例01---')

    def test_02(self):
        print('---用例02---')

    def test_03(self):
        print('---用例03---')


if __name__ == '__main__':
    pytest.main(['-vs', 'test__01.py'])

這種方法的執行順序,那個fixture名稱在前面,就先執行那個方法

 

第2種:

通過疊加的形式進行傳參,再次創建一個usefixture方法

#coding:utf-8

import pytest

@pytest.fixture()
def fun():
    print('這是fun的fixture方法')

@pytest.fixture()
def login():
    print('輸入用戶名,密碼。完成登錄')
    yield
    print('退出')


@pytest.mark.usefixtures('login')
@pytest.mark.usefixtures('fun')
class Test_01:

    def test_01(self):
        print('---用例01---')

    def test_02(self):
        print('---用例02---')

    def test_03(self):
        print('---用例03---')


if __name__ == '__main__':
    pytest.main(['-vs', 'test__01.py'])

 

這種方法的執行順序,那個usefixture方法在下面,先執行那個。

 

混合使用

我們還有一種使用方法就是函數的fixture和類的usefixture同時使用

#coding:utf-8

import pytest

@pytest.fixture()
def fun():
    print('這是fun的fixture方法')

@pytest.fixture()
def login():
    print('輸入用戶名,密碼。完成登錄')
    yield
    print('退出')


@pytest.mark.usefixtures('login')
class Test_01:

    def test_01(self,fun):
        print('---用例01---')

    def test_02(self):
        print('---用例02---')

    def test_03(self,fun):
        print('---用例03---')


if __name__ == '__main__':
    pytest.main(['-vs', 'test__01.py'])

 

通過上面執行結果可以看出來,usefixture和fixture可以同時使用,執行的順序肯定是先usefixture然后在fixture。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM