code: def testVariableScale(self):
      x = tf.Variable(1.0)
      d = johnson_su.JohnsonSU(
          skewness=0.0,
          tailweight=2.0,
          loc=0.0,
          scale=x,
          validate_args=True,
      )
      self.evaluate([v.initializer for v in d.variables])
      self.assertIs(x, d.scale)
      self.assertEqual(0.0, self.evaluate(d.mean()))
      with self.assertRaisesOpError(
          "Argument `scale` must be positive."
      ):
          with tf.control_dependencies([x.assign(-1.0)]):
              self.evaluate(d.mean())
  
imports: import math
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import johnson_su
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 28 for calling the JohnsonSUTest obj's underlying member method code with example usage: obj.testVariableScale() without return types