code: def setUp(self) -> None:
      super().setUp()
  
      # st.secrets modifies os.environ, so we save it here and
      # restore in tearDown.
      self._prev_environ = dict(os.environ)
  
      # Caching functions rely on an active script run ctx
      add_script_run_ctx(
          threading.current_thread(), create_mock_script_run_ctx()
      )
  
imports: import os
  import sys
  import threading
  import unittest
  from unittest.mock import MagicMock, mock_open, patch
  import pytest
  from parameterized import parameterized
  from streamlit.connections import BaseConnection, SnowflakeConnection, SnowparkConnection, SQLConnection
  from streamlit.errors import StreamlitAPIException
  from streamlit.runtime.caching.cache_resource_api import _resource_caches
  from streamlit.runtime.connection_factory import _create_connection, _get_first_party_connection, connection_factory
  from streamlit.runtime.scriptrunner import add_script_run_ctx
  from streamlit.runtime.secrets import secrets_singleton
  from tests.testutil import create_mock_script_run_ctx
label_desc: Use image node_id 1 for calling the ConnectionFactoryTest obj's underlying member method code with example usage: obj.setUp() without return types