code: def test_appo_model_variables(self):
      config = (
          appo.APPOConfig()
          .rollouts(
              num_rollout_workers=1,
              batch_mode="truncate_episodes",
              rollout_fragment_length=10,
          )
          .resources(num_gpus=0)
          .training(
              train_batch_size=20,
          )
          .training(
              model={
                  "fcnet_hiddens": [16],
              }
          )
      )
  
      for _ in framework_iterator(config, frameworks=["tf2", "torch"]):
          algo = config.build(env="CartPole-v1")
          state = algo.get_policy(DEFAULT_POLICY_ID).get_state()
          # Weights and Biases for the single hidden layer, the output layer
          # of the policy and value networks. So 6 tensors in total.
          # We should not get the tensors from the target model here.
          self.assertEqual(len(state["weights"]), 6)
  
file_path: ray/python/ray/rllib/algorithms/appo/tests/test_appo.py
imports: import unittest
  import ray
  import ray.rllib.algorithms.appo
  from ray.rllib.policy.sample_batch import DEFAULT_POLICY_ID
  from ray.rllib.utils.metrics.learner_info import LEARNER_INFO, LEARNER_STATS_KEY
  from ray.rllib.utils.test_utils import check_compute_single_action, check_train_results, framework_iterator
label_desc: Use image node_id 8 for calling the TestAPPO obj's underlying member method code with example usage: obj.test_appo_model_variables() without return types