Yo uso Mock (que ahora es unittest.mock en py3.3 +) para esto:
from mock import patch
from PyQt4 import Qt
@patch.object(Qt.QMessageBox, 'aboutQt')
def testShowAboutQt(self, mock):
self.win.actionAboutQt.trigger()
self.assertTrue(mock.called)
Para su caso, podría verse así:
import mock
from mock import patch
def testClearWasCalled(self):
aw = aps.Request("nv1")
with patch.object(aw, 'Clear') as mock:
aw2 = aps.Request("nv2", aw)
mock.assert_called_with(42)
Mock admite bastantes características útiles, incluidas las formas de parchear un objeto o módulo, así como verificar que se haya llamado lo correcto, etc.
¡Advertencia emptor! (¡El comprador tenga cuidado!)
Si escribe incorrectamente assert_called_with( assert_called_onceo assert_called_wiht), es posible que la prueba aún se ejecute, ya que Mock pensará que se trata de una función simulada y la seguirá felizmente, a menos que utilice autospec=true. Para obtener más información, lea assert_called_once: Threat or Menace .