Я создаю приложение, которое использует базу данных в бэкэнде. Для интеграционных тестов я запускаю базу данных в Docker и запускаю набор тестов с pytest.
Я использую фиксатор сессионной области с autouse=True
, чтобы запустить контейнер Docker:
@pytest.fixture(scope='session', autouse=True)
def run_database():
# setup code skipped ...
# start container with docker-py
container.start()
# yield container to run tests
yield container
# stop container afterwards
container.stop()
Я передаю соединение с базой данных тестовым функциям с помощью другого фиксатора сессий:
@pytest.fixture(scope='session')
def connection():
return Connection(...)
Теперь я могу запустить тестовую функцию:
def test_something(connection):
result = connection.run(...)
assert result == 'abc'
Однако я бы хотел запускать мои тестовые функции для нескольких разных версий базы данных.
Я могу запустить несколько контейнеров Docker в приспособлении run_database()
. Как я могу параметризовать мои тестовые функции так, чтобы они работали для двух разных connection()
приборов?