У меня есть собственный менеджер контекста, который я использую (но не прибор) для настройки и очистки теста:
@contextmanager
def db_content(*args, **kwargs):
instance = db_insert( ... )
yield instance
db_delete(instance)
def test_my_test():
with db_content( ... ) as instance:
# ...
assert result
Проблема заключается в том, что когда утверждение не выполняется, код db_delete()
, означающий операторы после выхода, не выполняется.
Я вижу, что если я использую прибор, это работает.
@pytest.fixture
def db_instance():
instance = db_insert( ... )
yield instance
db_delete(instance)
def test_my_test(db_instance):
# ...
assert result
Однако светильники очень негибкие. Я хотел бы передавать разные аргументы моему контексту каждый тест, в то время как использование приборов заставило бы меня определять разные приборы для каждого случая.