code: def test_script_object(self, r):
      r.set("a", 2)
      multiply = r.register_script(multiply_script)
      precalculated_sha = multiply.sha
      assert precalculated_sha
      assert r.script_exists(multiply.sha) == [False]
      # Test second evalsha block (after NoScriptError)
      assert multiply(keys=["a"], args=[3]) == 6
      # At this point, the script should be loaded
      assert r.script_exists(multiply.sha) == [True]
      # Test that the precalculated sha matches the one from redis
      assert multiply.sha == precalculated_sha
      # Test first evalsha block
      assert multiply(keys=["a"], args=[3]) == 6
  
imports: import pytest
  import redis
  from redis import exceptions
  from redis.commands.core import Script
  from tests.conftest import skip_if_redis_enterprise, skip_if_server_version_lt
label_desc: Use image node_id 14 for calling the TestScripting obj's underlying member method code with example usage: obj.test_script_object(r) without return types