Eu uso o Mock (que agora é unittest.mock em py3.3 +) para isso:
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 o seu caso, poderia ser assim:
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)
O Mock suporta alguns recursos úteis, incluindo maneiras de corrigir um objeto ou módulo, bem como verificar se a coisa certa foi chamada, etc, etc.
Caveat emptor! (Cuidado, comprador!)
Se você digitar incorretamente assert_called_with(para assert_called_onceou assert_called_wiht) seu teste ainda poderá ser executado, pois o Mock pensará que esta é uma função simulada e felizmente continuará, a menos que você use autospec=true. Para obter mais informações, leia assert_called_once: Ameaça ou Ameaça .