I'm using Tornado as a coroutine engine for a periodic process, where the repeating coroutine calls ioloop.call_later()
on itself at the end of each execution. I'm now trying to drive this with unit tests (using Tornado's gen.test) where I'm mocking the ioloop's time with a local variable t: DUT.ioloop.time = mock.Mock(side_effect= lambda: t)
(DUT <==> Device Under Test) Then in the test, I manually increment t, and yield gen.moment
to kick the ioloop. The idea is to trigger the repeating coroutine after various intervals so I can verify its behaviour. But the coroutine doesn't always trigger - or perhaps it yields back to the testing code before completing execution, causing failures. I think should be using stop()
and wait()
to synchronise the test code, but I can't see concretely how to use them in this situation. And how does this whole testing strategy work if the DUT runs in its own ioloop?
jeudi 26 novembre 2015
Unit-testing a periodic coroutine with mock time
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire