code: def test_scopes_caches_by_connection_name(self):
      # Caching functions rely on an active script run ctx
      add_script_run_ctx(
          threading.current_thread(), create_mock_script_run_ctx()
      )
      mock_cursor = MagicMock()
      mock_cursor.fetch_pandas_all = MagicMock(
          return_value="i am a dataframe"
      )
  
      conn1 = SnowflakeConnection("my_snowflake_connection1")
      conn1._instance.cursor.return_value = mock_cursor
      conn2 = SnowflakeConnection("my_snowflake_connection2")
      conn2._instance.cursor.return_value = mock_cursor
  
      conn1.query("SELECT 1;")
      conn1.query("SELECT 1;")
      conn2.query("SELECT 1;")
      conn2.query("SELECT 1;")
  
      assert conn1._instance.cursor is conn2._instance.cursor
      assert conn1._instance.cursor.call_count == 2
      assert mock_cursor.execute.call_count == 2
  
imports: import threading
  import unittest
  from unittest.mock import MagicMock, PropertyMock, patch
  import pytest
  import streamlit
  from streamlit.connections import SnowflakeConnection
  from streamlit.errors import StreamlitAPIException
  from streamlit.runtime.scriptrunner import add_script_run_ctx
  from streamlit.runtime.secrets import AttrDict
  from tests.testutil import create_mock_script_run_ctx
label_desc: Use image node_id 9 for calling the SnowflakeConnectionTest obj's underlying member method code with example usage: obj.test_scopes_caches_by_connection_name() without return types