diff --git a/pyproject.toml b/pyproject.toml index 898d6014..91c45283 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pytest-mock-resources" -version = "2.6.5" +version = "2.6.6" description = "A pytest plugin for easily instantiating reproducible mock resources." authors = [ "Omar Khan ", diff --git a/src/pytest_mock_resources/container/mysql.py b/src/pytest_mock_resources/container/mysql.py index 4f3d16b1..ea58ed3d 100644 --- a/src/pytest_mock_resources/container/mysql.py +++ b/src/pytest_mock_resources/container/mysql.py @@ -70,7 +70,7 @@ def check_fn(self): ) -def get_sqlalchemy_engine(config, database_name, isolation_level=None): +def get_sqlalchemy_engine(config, database_name, **engine_kwargs): url = compat.sqlalchemy.URL( "mysql+pymysql", username=config.username, @@ -80,15 +80,11 @@ def get_sqlalchemy_engine(config, database_name, isolation_level=None): database=database_name, ) - options = {} - if isolation_level: - options["isolation_level"] = isolation_level - from pytest_mock_resources.compat import pymysql pymysql.connect - engine = sqlalchemy.create_engine(url, **options) + engine = sqlalchemy.create_engine(url, **engine_kwargs) # Verify engine is connected engine.connect() diff --git a/src/pytest_mock_resources/fixture/mysql.py b/src/pytest_mock_resources/fixture/mysql.py index 4af5f2fa..b0c0e7af 100644 --- a/src/pytest_mock_resources/fixture/mysql.py +++ b/src/pytest_mock_resources/fixture/mysql.py @@ -24,7 +24,13 @@ def pmr_mysql_container(pytestconfig, pmr_mysql_config): yield from get_container(pytestconfig, pmr_mysql_config) -def create_mysql_fixture(*ordered_actions, scope="function", tables=None, session=None): +def create_mysql_fixture( + *ordered_actions, + scope="function", + tables=None, + session=None, + engine_kwargs=None, +): """Produce a MySQL fixture. Any number of fixture functions can be created. Under the hood they will all share the same @@ -37,12 +43,17 @@ def create_mysql_fixture(*ordered_actions, scope="function", tables=None, sessio most useful when a model-base was specified in `ordered_actions`. session: Whether to return a session instead of an engine directly. This can either be a bool or a callable capable of producing a session. + engine_kwargs: Optional set of kwargs to send into the engine on creation. """ @pytest.fixture(scope=scope) def _(pmr_mysql_container, pmr_mysql_config): database_name = _create_clean_database(pmr_mysql_config) - engine = get_sqlalchemy_engine(pmr_mysql_config, database_name) + engine = get_sqlalchemy_engine( + pmr_mysql_config, + database_name, + **(engine_kwargs or {}), + ) engine_manager = EngineManager.create( engine, dynamic_actions=ordered_actions, tables=tables, session=session