aufgerufen wurde Ich versuche unittest
zu verwenden, um einige Funktionen eines SimpleXMLRPCServer zu testen, den ich gemacht habe. Zusammen mit Mock versuche ich jetzt zu behaupten, dass eine bestimmte Nachricht protokolliert wurde, wenn eine if-Anweisung erreicht wird, aber ich kann sie nicht zum Laufen bringen. Ich habe versucht, verschiedene Antworten zu implementieren, die ich hier auf StackOverflow oder Googlen gefunden habe, aber immer noch kein Glück. Die Anrufe ich im Testfall machen, sind wie folgt:Stellen Sie sicher, dass die Protokollierung mit einer bestimmten Zeichenfolge
def test_listen_for_tasks(self):
el = {'release': 'default', 'component': None}
for i in range(50):
self.server._queue.put(el)
ServerThread.listen_for_tasks(self.server, 'bla', 'blabla')
with mock.patch('queue_server.logging') as mock_logging:
mock_logging.warning.assert_called_with('There are currently {}'
' items in the queue'.format(
str(len(self.server._queue.queue))))
Die Funktion im Server ist wie folgt:
def listen_for_tasks(self, release, component):
item = {'release': release, 'component': component}
for el in list(self._queue.queue):
if self.is_request_duplicate(el, item):
logger.debug('Already have a request'
' for this component: {}'.format(item))
return
self._queue.put(item, False)
if len(self._queue.queue) > 50:
logger.warning('There are currently {}'
' items in the queue'.format(
str(len(self._queue.queue))))
Jede Idee, warum dies nicht funktioniert? Ich bin neu in Komponententests in Python und behaupte, dass ein Logger etwas getan hat, scheint das größte Problem zu sein, dem man gegenüberstehen könnte, also könnte ich etwas wirklich Einfaches im Code vermasselt haben. Jede Art von Hilfe wird sehr geschätzt werden!
EDIT: Für Vollständigkeit, hier ist der Testausgang und Versagen:
.No handlers could be found for logger "queue_server"
F
FAIL: test_listen_for_tasks (__main__.TestQueueServer)
Traceback (most recent call last):
File "artifacts_generator/test_queue_server.py", line 46, in test_listen_for_tasks
str(len(self.server._queue.queue))))
File "/home/lugiorgi/Desktop/Code/publisher/env/local/lib/python2.7/site-packages/mock/mock.py", line 925, in assert_called_with
raise AssertionError('Expected call: %s\nNot called' % (expected,))
AssertionError: Expected call: warning('There are currently 51 items in the queue')
Not called
Ran 2 tests in 0.137s
FAILED (failures=1)
funktioniert wie ein Charme, vielen Dank nutzen! –
Da dies für Python 2.7 getaggt ist, sollte eine vollständige Antwort den Backport unter https://github.com/testing-cabal/mock erwähnen, während das nicht Teil seiner eingebauten Module ist. –