[pytest-dev] How do plugins support multiple pytest versions?

Brian Okken variedthoughts at gmail.com
Tue Oct 6 13:28:20 EDT 2020


Bruno,
Thanks for the great and rapid info. 

- Brian

> On Oct 6, 2020, at 10:07 AM, Bruno Oliveira <nicoddemus at gmail.com> wrote:
> 
> 
> Hey Brian,
> 
> 
>> On Tue, Oct 6, 2020 at 1:55 PM Brian Okken <variedthoughts at gmail.com> wrote:
>> Hi,
>> 
>> How do plugins support multiple pytest versions when the hook api changes?
>> Or should they?
>> 
>> Example.
>> pytest-json-report ytest_warning_captured, which was deprecated in pytest 6.
>> Looks like there's a new hook, pytest_warning_recorded, with similar enough API.
>> I haven't tested it to see if the behavior is close enough to work as a drop in replacement.
>> 
>> But even if it is, switching to the new api makes the plugin only work on pytest 6.0 and above.
>> 
>> Is it recommended that plugin authors try to force users to always use the latest pytest? 
>> What if they want to support older versions also?
>> 
>> Is there a recommended way to say this?
>> 
>> if  pytest version < 6, use one hook
>> else use new hook
> 
> I believe it really depends on the plugin and how many users you have. Certainly only supporting the latest pytest version is easier, 
> but if you must support older versions, then checking the version to decide which hooks to implement is doable.
> 
> An alternative is to check if the new hook exists, like how we used to do in pytest-xdist:
> 
> https://github.com/pytest-dev/pytest-xdist/blob/7bf654775dcd2fef9c0ebafbea982b7d180b740e/src/xdist/remote.py#L142-L164
> 
> Where we implement one hook or the other, giving preference to the new hook when available.
> 
> Cheers,
> Bruno.
> 
>   
>> 
>> Thanks,
>> Brian 
>> _______________________________________________
>> pytest-dev mailing list
>> pytest-dev at python.org
>> https://mail.python.org/mailman/listinfo/pytest-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20201006/563151e3/attachment.html>


More information about the pytest-dev mailing list