Я начал использовать инфраструктуру unitest, основанную на pytest, для добавления дополнительного класса тестирования (см. Ниже TestMyStuff
)
Похоже, что если я добавлю приборы xi
и yi
в качестве входных данных метода setup_method
, они будут ссылаться на них как на функции из fixtures.py
, но добавляя их в каждую из тестовых функций, они получат свой возврат значение classX
и classY
соответственно, а не значение функции.
Оба метода тестирования имеют идентичный кодовый блок, для которого требуется xi
и yi
, а также дополнительный уникальный код для каждого теста.
Я хочу взять общий код и добавить его к test_method
, но для этого мне нужны xi
и yi
как экземпляры classX
и classY
, которые возвращает метод fixtures, а не сами методы из fixtures.py
Вкратце, есть ли способ разделить некоторые готовые приборы между всеми функциями класса (как методами тестирования, так и методом пролога)?
test_xy.py
from fixtures import *
class TestMyStuff
def setup_method(self, test_method, xi, yi):
# here xi and yi are functions :-(
self.x = classX.makeX()
self.y = classY.makeY()
def test_X(self, xi, yi):
# here xi and yi are instances of classX and classY
# do shared stuff with xi and yi
# do unique stuff with xi and yi
def test_Y(self, xi,yi):
# here xi and yi are instances of classX and classY
# do shared stuff with xi and yi
# do other stuff with xi and yi
fixtures.py
from classY import classY
from classX import classX
@pytest.fixture()
def xi(request):
...
return classX(request.var1, request.var2, request.var3)
#classX is implemented on different file called classX.py
@pytest.fixture()
def yi(request, xi)
...
return classY(request.var1, xi)