code: def test_factorial(n):
      _n = vector("n")
      actual_fn = function([_n], factorial(_n))
  
      n = random_ranged(0, 5, (2,))
      actual = actual_fn(n)
      expected = scipy_factorial(n)
      np.testing.assert_allclose(
          actual,
          expected,
          rtol=1e-7 if config.floatX == "float64" else 1e-5,
      )
  
imports: import numpy
  import pytest
  from scipy.special import beta
  from scipy.special import factorial
  from scipy.special import log_softmax
  from scipy.special import poch
  from scipy.special import softmax
  from pytensor.compile.function import function
  from pytensor.configdefaults import config
  from pytensor.graph.replace import vectorize_node
  from pytensor.tensor.blockwise import Blockwise
  from pytensor.tensor.special import LogSoftmax, Softmax, SoftmaxGrad, beta, betaln, factorial, log_softmax, poch, softmax
  from pytensor.tensor.type import matrix, tensor, tensor3, tensor4, vector, vectors
  from tests import unittest_tools
  from tests.tensor.utils import random_ranged
label_desc: Use image node_id 3 for calling a global function with example usage: test_factorial(n) without return types