У меня есть класс, отвечающий за генерацию сюжета:
class PlotX:
def one(param1)
def two(param1)
...
, и я хочу его протестировать.Я группирую все методы тестирования внутри класса TestPlotX:
class TestPlotX:
data_for_test_one = (
(
# Input
# Test that method one does ...
pd.DataFrame()
# Expected
pd.DataFrame()
),
(.. more test data ..)
)
@pytest.mark.parametrize('test_input, expected', data_for_test_one)
def test_one(self, test_input, expected):
plot = PlotX()
actual = plot.one(test_input)
assert_frame_equal(actual, expected)
data_for_test_two = (
(
# Input
# Test that method two does ...
pd.DataFrame()
# Expected
pd.DataFrame()
),
(.. more test data ..)
)
@pytest.mark.parametrize('test_input, expected', data_for_test_two)
def test_two(self, test_input, expected):
plot = PlotX()
actual = plot.two(test_input)
assert_frame_equal(actual, expected)
У меня есть две основные проблемы с моей текущей настройкой:
1) Я чувствую, что тестовые данные (data_for_test_one) на самом деле непринадлежать там.Есть ли лучшее место для этого?
2) Я создаю экземпляр класса с каждым методом тестирования, который мне нужен, чтобы у меня был новый объект, но у pytest нет лучшего способа сделать это?
Редактировать:
Я вижу, что могу использовать что-то вроде этого:
class TestPlotX:
def setup(self):
self.plot = PlotX()
, но я не знаю, будет линовый экземпляр графика для каждого метода испытаний.