[PATCH] tests: fix assertion rewriting in some tests with pytest-3.0.0+

Thomas De Schampheleire patrickdepinguin at gmail.com
Mon Sep 12 18:54:51 UTC 2016


On Mon, Sep 12, 2016 at 5:26 PM, Mads Kiilerich <mads at kiilerich.com> wrote:
> On 09/11/2016 09:48 PM, Thomas De Schampheleire wrote:
>>
>> On Sat, Sep 10, 2016 at 1:51 PM, Mads Kiilerich <mads at kiilerich.com>
>> wrote:
>>>
>>> On 09/09/2016 04:03 PM, Thomas De Schampheleire wrote:
>>>>
>>>> # HG changeset patch
>>>> # User Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>
>>>> # Date 1473428048 -7200
>>>> #      Fri Sep 09 15:34:08 2016 +0200
>>>> # Node ID 6889d3b7435f1c4bb91d24a3af7774323ecbc778
>>>> # Parent  59639343672495cb89be54b98f1d6d3a4c44307c
>>>> tests: fix assertion rewriting in some tests with pytest-3.0.0+
>>>>
>>>> Since pytest 3.0.0, asserts present in modules that are not directly
>>>> seen
>>>> by
>>>> pytest as 'test modules', are no longer rewritten to have improved
>>>> reporting, unless they are explicitly marked as up-for-rewriting.
>>>>
>>>> This is e.g. the case for asserts in files like
>>>> kallithea/tests/api/api_base.py and kallithea/tests/models/common.py.
>>>>
>>>> See
>>>> http://doc.pytest.org/en/latest/changelog.html#id13
>>>> http://doc.pytest.org/en/latest/writing_plugins.html#assertion-rewriting
>>>>
>>>> diff --git a/kallithea/tests/__init__.py b/kallithea/tests/__init__.py
>>>> --- a/kallithea/tests/__init__.py
>>>> +++ b/kallithea/tests/__init__.py
>>>> @@ -42,6 +42,10 @@ from routes.util import URLGenerator
>>>>    from webtest import TestApp
>>>>    import pytest
>>>>    +# make sure that all asserts under kallithea/tests benefit from
>>>> advanced assert
>>>> +# reporting, before importing these modules.
>>>> +pytest.register_assert_rewrite('kallithea.tests')
>>>
>>>
>>> But also, why was it changed in pytest? What is the point in not having
>>> it
>>> enabled everywhere?
>>
>> According to
>> http://doc.pytest.org/en/latest/writing_plugins.html#assertion-rewriting
>>
>> "However since we do not want to test different bytecode then you will
>> run in production this hook only re-writes test modules themselves as
>> well as any modules which are part of plugins. Any other imported
>> module will not be re-written and normal assertion behaviour will
>> happen."
>
>
> Right - I didn't read that far. Makes sense.
>
>>> It sounds like something that also (and perhaps better?) could be set in
>>> pytest.ini?
>>
>> The mentioned link also mentions adding an entry point in setup.py, I
>> can see if that works too, if you prefer that better.
>
>
> I don't know - I just wondered. You the expert in this area (whether you
> like it or not: at least more than me ;-) ).
>
> But it seems like this change cause a warning when running any test:
> WP1 None Modules are already imported so can not be re-written:
> kallithea.tests
>
> Should we accept that, or tweak the filter or imports or ...?

I sent a v2 where the pytest call is done from kallithea/__init__.py
instead of from kallithea/tests/__init__.py which itself can then
indeed no longer be rewritten.


More information about the kallithea-general mailing list