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

Mads Kiilerich mads at kiilerich.com
Mon Sep 12 15:26:14 UTC 2016


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 ...?

/Mads


More information about the kallithea-general mailing list