一、fixture 之 conftest.py 檔案
二、建立 conftest.py 檔案,定義前置 + 後置
fixture 函式根據關鍵字 yield 作為前置和後置的分割線,並且 yield 也可以接收返回值,返回元祖,作用相當於return
yield(譯:優特):分割線,返回前置結果
import pytest將fixtures的函式名稱作為測試用例的入參@pytest.fixture()
def init_demo():
print("這是測試用例的前置")
a = 1
yield a # 分割線(yield + 返回值)
print("這是測試用例的後置")
如果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 這...