Re: automated tests for a server application

Chris Withers <[email protected]>
Newsgroups gmane.comp.python.twisted
Message-ID <[email protected]>
On 06/11/2018 05:43, Moshe Zadka wrote:
>
> Some of the best advice depends on details of the application. One 
> trick that is sometimes useful is passing in a "fake" reactor object. 
> This, of course, is only useful if the application is structured in a 
> way that functions/classes expect to get a reactor, instead of 
> reaching for the global one. However, usually *that's* not a 
> complicated refactoring to do.

Cool, do you have any example tests that do this?
Interesting, looks like pytest-twisted does away for the need for this 
by showing how to install a fake reactor globally:
https://github.com/pytest-dev/pytest-twisted/blob/master/pytest_twisted.py#L129-L142

> You can look at 
> https://twistedmatrix.com/documents/current/api/twisted.test.proto_helpers.MemoryReactor.html for 
> inspiration although, as all code under `twisted.test`, it is not 
> intended as end-user functionality, so using it directly is problematic. 

Not sure I fully understand this, why is the MemoryReactor bad to use? 
Where is it used?

> It would be nice to have externally-useful reactors along the lines of 
> Clock 
> (https://twistedmatrix.com/documents/current/api/twisted.internet.task.Clock.html ) 
> but, unfortunately, we do not have that yet.

So, clock is just a clock, right? How would that get worked into a 
"real" reactor for testing?

> You can, of course, use a real reactor and a real client to pump data. 
> However, in that case, you probably do want to switch to trial so that 
> you can return a deferred from a test function and have the reactor 
> run until the deferred fires. This is not great, but can work in a pinch.

pytest-twisted looks like it supports this pattern too, allowing test 
functions to return deferreds...

I guess I'm still really looking to see examples of all of this...

Chris

_______________________________________________
Twisted-Python mailing list
[email protected]
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.