pytest 之 fixture 的前置後置功能

2022-07-01 13:15:11 字數 2423 閱讀 8027

一、fixture 之 conftest.py 檔案

二、建立 conftest.py 檔案,定義前置 + 後置

fixture 函式根據關鍵字 yield 作為前置和後置的分割線,並且 yield 也可以接收返回值,返回元祖,作用相當於return

yield(譯:優特):分割線,返回前置結果

import pytest

@pytest.fixture()

def init_demo():

print("這是測試用例的前置")

a = 1

yield a # 分割線(yield + 返回值)

print("這是測試用例的後置")

將fixtures的函式名稱作為測試用例的入參

如果fixture有返回值,那麼測試用例中的fixture函式名稱就接收返回值,並且可以將fixture函式名稱作為返回值使用

def test_add_01(init_demo):

b = init_demo + 2

assert 3 == b

執行結果:

在測試用例/測試類前面加上@pytest.mark.usefixtures('fixture函式名稱')

ps:定義conftest.py檔案,在此檔案中可以定義多個fixture,pytest會自動搜尋此檔案

import pytest

@pytest.mark.usefixtures('init_demo')

def test_add_02():

b = 1 + 2

assert 3 == b

執行結果:

conftest**如下:

import pytest

@pytest.fixture(autouse=ture)

def init_demo():

print("這是測試用例的前置")

yield

print("這是測試用例的後置")

測試**如下:

import pytest

def test_add_02():

b = 1 + 2

assert 3 == b

執行結果:

conftest.py**如下:

import pytest

@pytest.fixture(scope='session')

def init_session():

print("這是測試會話的前置")

yield

print("這是測試會話的後置")

@pytest.fixture(scope='module')

def init_module(init_session):

print("這是測試模組的前置")

yield

print("這是測試模組的後置")

@pytest.fixture(scope='class')

def init_class(init_module):

print("這是測試類的前置")

yield

print("這是測試類的後置")

@pytest.fixture # 相當於@pytest.fixture(scope='function')

def init_function(init_class):

print("這是測試用例的前置")

yield

print("這是測試用例的後置")

測試**如下:

import pytest

@pytest.mark.usefixtures('init_function')

def test_demo():

print('測試用例')

assert 3 == 3

執行結果:

五、層級作用域

使用 fixture 的順序-- 子目錄當中,也可以擁有自己的 conftest

pytest 之 fixture引數化

pytest 之 fixture引數化 前面通過unittest框架介紹了ui自動化po模式,basepage封裝後,unittest框架搭建的ui自動化框架,基本就成型了。前面的幾篇pytest文章,也簡要介紹了pytest和unittest框架的相同與不同之處。將unittest框架替換為pyt...

pytest之fixture的詳細使用

前言 1 首先要理解unittest中setup teardown的作用,可以實現在執行用例前或結束後加入一些操作,但這種都是針對整個測試類全域性生效的 2 如果有以下場景 用例 1 需要先登入,用例 2 不需要登入,當每個測試用例的執行環境和條件都不一樣時,顯然無法用 setup 和 teardo...

pytest框架之fixture前置和後置

fixture函式根據關鍵字yield作為前置和後置的分割線,並且yield也可以接收返回值,作用相當於return import pytest pytest.fixture definit demo print 這是測試用例的前置 a 1 yield a 分割線 yield 返回值 print 這...