code: def test_query_caches_value(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"
      )
      conn = SnowflakeConnection("my_snowflake_connection")
      conn._instance.cursor.return_value = mock_cursor
  
      assert conn.query("SELECT 1;") == "i am a dataframe"
      assert conn.query("SELECT 1;") == "i am a dataframe"
  
      conn._instance.cursor.assert_called_once()
      mock_cursor.execute.assert_called_once_with(
          "SELECT 1;", params=None
      )
  
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 7 for calling the SnowflakeConnectionTest obj's underlying member method code with example usage: obj.test_query_caches_value() without return types