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

Mads Kiilerich mads at kiilerich.com
Mon Sep 12 19:05:18 UTC 2016


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?

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 .

/Mads



More information about the kallithea-general mailing list