class_docstr: Tests for the vjp function
class_docstr_tok: ["Tests","for","the","vjp","function"]
docstr: A zero dy vector will return no tapes and a zero matrix
docstr_tok: ["A","zero","dy","vector","will","return","no","tapes","and","a","zero","matrix"]
code: def test_zero_dy(self):
      """A zero dy vector will return no tapes and a zero matrix"""
  
      with qml.queuing.AnnotatedQueue() as q:
          qml.RX(0.4, wires=0)
          qml.RX(0.6, wires=0)
          qml.CNOT(wires=[0, 1])
          qml.expval(qml.PauliZ(0))
  
      tape = qml.tape.QuantumScript.from_queue(q)
      tape.trainable_params = {0, 1}
      dy = np.array([0.0])
      tapes, fn = qml.gradients.vjp(tape, dy, param_shift)
  
      assert not tapes
      assert np.all(fn(tapes) == np.zeros([len(tape.trainable_params)]))
  
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 2 for calling the TestVJP obj's underlying member method code with example usage: obj.test_zero_dy() without return types