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

Thomas De Schampheleire patrickdepinguin at gmail.com
Mon Sep 12 19:29:55 UTC 2016


On Mon, Sep 12, 2016 at 9:05 PM, Mads Kiilerich <mads at kiilerich.com> wrote:
> On 09/12/2016 08:52 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 728f0df729b15b40165c1f8bfc26f45b25ccd5d3
>> # 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.
>> Rationale from pytest upstream:
>>
>>      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.
>>
>> 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/__init__.py b/kallithea/__init__.py
>> --- a/kallithea/__init__.py
>> +++ b/kallithea/__init__.py
>> @@ -86,3 +86,8 @@ if len(VERSION) > 3:
>>   import uuid
>>   if not hasattr(uuid, '_uuid_generate_random'):
>>       uuid._uuid_generate_random = None
>> +
>> +# make sure that all asserts under kallithea/tests benefit from advanced
>> assert
>> +# reporting, before importing these modules.
>> +import pytest
>> +pytest.register_assert_rewrite('kallithea.tests')
>
>
>
> But this will require pytest to always be present and loaded at runtime?

*grumbl* ;-)

>
> It seems like also here, the problem is that we do too much in __init__.py .
> Perhaps this initialization (with slight modifications) should be in
> kallithea/tests/__init__.py, but TestController and helper functions should
> first move to something like kallithea/tests/base.py .
>

Perhaps so, but even then with
'register_assert_rewrite('kallithea.tests') from
kallithea/tests/__init__.py, the warning would pop up. I haven't tried
to add a trailing dot there, to indicate all submodules. Is that valid
python syntax?


More information about the kallithea-general mailing list