class_docstr: Tests for the vjp function
class_docstr_tok: ["Tests","for","the","vjp","function"]
docstr: A tape with no trainable parameters will simply return None
docstr_tok: ["A","tape","with","no","trainable","parameters","will","simply","return","None"]
code: def test_no_trainable_parameters(self):
      """A tape with no trainable parameters will simply return None"""
  
      with qml.queuing.AnnotatedQueue() as q:
          qml.RX(0.4, wires=0)
          qml.CNOT(wires=[0, 1])
          qml.expval(qml.PauliZ(0))
  
      tape = qml.tape.QuantumScript.from_queue(q)
      tape.trainable_params = {}
      dy = np.array([1.0])
      tapes, fn = qml.gradients.vjp(tape, dy, param_shift)
  
      assert not tapes
      assert fn(tapes) is None
  
imports: from functools import partial
  import pytest
  import pennylane
  from pennylane import numpy
  from pennylane.gradients import param_shift
label_desc: Use image node_id 1 for calling the TestVJP obj's underlying member method code with example usage: obj.test_no_trainable_parameters() without return types