code: def test_factorrat():
      assert str(factorrat(S(12) / 1, visual=True)) == "2**2*3**1"
      assert str(factorrat(Rational(1, 1), visual=True)) == "1"
      assert str(factorrat(S(25) / 14, visual=True)) == "5**2/(2*7)"
      assert (
          str(factorrat(Rational(25, 14), visual=True)) == "5**2/(2*7)"
      )
      assert (
          str(factorrat(S(-25) / 14 / 9, visual=True))
          == "-1*5**2/(2*3**2*7)"
      )
  
      assert factorrat(S(12) / 1, multiple=True) == [2, 2, 3]
      assert factorrat(Rational(1, 1), multiple=True) == []
      assert factorrat(S(25) / 14, multiple=True) == [
          Rational(1, 7),
          S.Half,
          5,
          5,
      ]
      assert factorrat(Rational(25, 14), multiple=True) == [
          Rational(1, 7),
          S.Half,
          5,
          5,
      ]
      assert factorrat(Rational(12, 1), multiple=True) == [2, 2, 3]
      assert factorrat(S(-25) / 14 / 9, multiple=True) == [
          -1,
          Rational(1, 7),
          Rational(1, 3),
          Rational(1, 3),
          S.Half,
          5,
          5,
      ]
  
imports: from sympy.concrete.summations import summation
  from sympy.core.containers import Dict
  from sympy.core.mul import Mul
  from sympy.core.power import Pow
  from sympy.core.singleton import S
  from sympy.core.symbol import Symbol
  from sympy.functions.combinatorial.factorials import factorial
  from sympy.core.numbers import Integer, Rational
  from sympy.external.gmpy import gcd
  from sympy.ntheory import totient, factorint, primefactors, divisors, nextprime, primerange, pollard_rho, perfect_power, multiplicity, multiplicity_in_factorial, divisor_count, primorial, pollard_pm1, divisor_sigma, factorrat, reduced_totient
  from sympy.ntheory.factor_ import smoothness, smoothness_p, proper_divisors, antidivisors, antidivisor_count, core, udivisors, udivisor_sigma, udivisor_count, proper_divisor_count, primenu, primeomega, mersenne_prime_exponent, is_perfect, is_abundant, is_deficient, is_amicable, dra, drm, _perfect_power
  from sympy.testing.pytest import raises, slow
  from sympy.utilities.iterables import capture
label_desc: Use image node_id 25 for calling a global function with example usage: test_factorrat() without return types