Чтобы проиллюстрировать, как можно реорганизовать код, чтобы использовать вместо него фиксаторы:
import pytest
@pytest.fixture(name='database_with_tables', scope='module')
def _database_with_tables():
try:
create_table(tb1)
create_table(tb2)
yield None # usually we would pass around a database connection / session
finally:
drop_table(tb1)
drop_table(tb2)
@pytest.mark.usefixtures("database_with_tables")
class TestClass:
def test_tc1(self):
<tc_content>
assert
Вам по-прежнему необходимо обрабатывать исключения, возникающие при создании таблицы.В большинстве случаев вы также захотите передать соединение с базой данных в метод теста, и в этом случае pytest.mark.usefixtures
больше не потребуется.Преимущество светильников в том, что они объявляют, что вам нужно для теста, а не как.Параметр scope
также можно установить на session
, чтобы жить дольше.