我目前正在爲中型庫(約300個文件)編寫測試。 很多類在這個庫共享其使用pytest編碼相同的測試方案:pytest燈具夾具
文件test_for_class_a.py:爲class_b,class_c等存在
import pytest
@pytest.fixture()
def setup_resource_1():
...
@pytest.fixture()
def setup_resource_2():
...
@pytest.fixture()
def setup_class_a(setup_resource_1, setup_resource_2):
...
def test_1_for_class_a(setup_class_a):
...
def test_2_for_class_a(setup_class_a):
...
類似的文件。唯一的區別是內容setup_resource_1 & setup_resource_2。
現在我想重新使用test_for_class_a.py,test_for_class_b.py和test_for_class_c.py中定義的固件setup_class_a,setup_class_b,setup_class_c對它們運行測試。
在一個文件test_all_class.py,這工作,但它是每個測試限制在一個固定設備:
from test_for_class_a import *
@pytest.mark.usefixtures('setup_class_a') # Fixture was defined in test_for_class_a.py
def test_some_things_on_class_a(request)
...
但是我正在尋找一種方式來執行更多的東西一般:
from test_for_class_a import *
from test_for_class_b import * # I can make sure I have no collision here
from test_for_class_c import * # I can make sure I have no collision here
==> @generate_test_for_fixture('setup_class_a', 'setup_class_b', 'setup_class_c')
def test_some_things_on_all_classes(request)
...
有沒有什麼辦法可以做到這一點? 我一直在尋找工廠和抽象pytest工廠的工廠,但我正在努力pytest定義夾具的方式。 有什麼辦法可以解決這個問題嗎?