Что является преимуществом (по умолчанию) для функции-рамки без кода разрыва? Почему бы просто не вызвать функцию в начале теста?В чем преимущество устройства с функцией и без кода разрыва?
Например, какая польза от написания:
@pytest.fixture
def smtp():
return smtplib.SMTP("smtp.gmail.com")
def test_ehlo(smtp):
response, msg = smtp.ehlo()
# ...
вместо того, чтобы просто:
def create_smtp():
return smtplib.SMTP("smtp.gmail.com")
def test_ehlo():
smtp = create_smtp()
response, msg = smtp.ehlo()
# ...
Я понимаю, почему светильники полезны, когда нам нужно код Teardown. Я также понимаю, почему полезны инструменты с областью действия, отличной от функции: мы можем повторно использовать один и тот же «внешний» объект в нескольких тестах (чтобы сохранить время, необходимое для его создания, или, возможно, даже поддерживать его состояние - хотя это кажется чтобы быть довольно опасным, поскольку это создает труднодоступную связь между отдельными тестами).
Это имеет смысл, хотя я думаю, что менее половины тестов, требующих приспособления, нуждаются в более чем одном из них. – max