Я пишу юнит-тесты для моего приложения на python с pytest.
В модуле, который я тестирую, есть много методов, которые будут вызываться последовательно, и их возвращаемые значения будут использоваться в качестве аргументов для других. Короче, у меня что-то вроде этого:
def foo_1():
#load file and do stuff
return bar_1
def foo_2(arg1):
#do stuff with arg1
return bar_2
def foo_3(arg1, arg2):
#do stuff with arg1 and arg2
return bar_3
x = foo_1()
y = foo_2(x)
z = foo_3(x,y)
Довольно простые вещи, и вот тесты, которые я запускаю:
import foo_app
class TestClass:
def test_foo_1(self):
self.x = foo_app.foo_1()
#never mind the assertions
assert 0 == self.x
def test_foo_2(self):
self.y = foo_app.foo_2(self.x)
#never mind the assertions
assert 1 == self.y
def test_foo_3(self):
self.z = foo_app.foo_3(self.x, self.y)
#never mind the assertions
assert 3 == self.z
Однако я хотел бы знать, является ли это хорошей практикой в модульном тестировании, и если нет, то каков наилучший способ справиться с такого рода сценарием, где я полагаюсь на выполнение предыдущих методов для достижения моего результата?