[Twisted-Python] pytest-twisted questions

Chris Withers chris at withers.org
Tue Nov 13 15:37:24 MST 2018


On 13/11/2018 20:31, Kyle Altendorf wrote:
> I would just open an issue on GitHub.  Feel free to copy this in as the 
> first message to keep the initial context.

Well, there's no specific issue to log here, so let's keep on going with 
email for now :-)

(in fact, copying in the twisted mailing list, as that's probably the 
right place for this)

> On 2018-11-13 12:35, Chris Withers wrote:
>> - What's the intention of the plugin? Should all tests still subclass
>> twisted.trial.unittest.TestCase or should they *never* do so if using
>> this plugin?
> 
> I don't know what _should_ be done, 

Victor, what was your intention with the project?

> but I know that I mostly don't have 
> test classes and, for the class I do have, I didn't inherit.  Mostly I 
> just @pytest.inlineCallbacks (I still don't like the namespace squashing 
> into pytest though :] ) and I suppose in the probably-not-too-distant 
> future I'll instead be using more @pytest_twisted.async_await  (ala 
> #31/#34).

Okay, but twisted.trial.unittest.TestCase does a bunch of reactor 
management stuff, most notable making you aware when you've left the 
reactor in a bad state. As far as I can see from the code, 
pytest-twisted does not do that, correct?

>> - What's with the greenlet mentions? Is this plugin okay to use when
>> I'm just using a normal Twisted epoll reactor?

https://github.com/pytest-dev/pytest-twisted/blob/master/pytest_twisted.py#L4
https://github.com/pytest-dev/pytest-twisted/blob/master/pytest_twisted.py#L36-L46
https://github.com/pytest-dev/pytest-twisted/blob/master/pytest_twisted.py#L68-L83
https://github.com/pytest-dev/pytest-twisted/blob/master/pytest_twisted.py#L123-L126

What does greenlet have to do with twisted in this context? Would be 
great to have it as an optional thing, unless I'm missing something?

>> - What does pytest provide *without* this plugin, when it comes to
>> testing with Twisted?
> 
> I am not aware of anything twisted/pytest specific that is outside 
> pytest-twisted, 

https://docs.pytest.org/en/latest/faq.html#how-does-pytest-relate-to-twisted-s-trial

So, my guess is that twisted.trial.unittest.TestCase subclasses 
unittest.TestCase and so pytest treats it in the same way. That means 
you get the management and checking of the reactor, along with the handy 
methods it provides, when you put your tests in class-based suites that 
subclass twisted.trial.unittest.TestCase.

Ronny, does pytest do anything else that's twisted-specific?

> If you are just trying to get started with something that works, I'd 
> skip the classes and inheritance and just let the reactor take care of 
> itself. 

My experience with Twisted over the last 10 years or so is that this is 
an exceedingly dangerous approach to take...

cheers,

Chris



More information about the Twisted-Python mailing list