2017-01-07 9 views
5

pytest делает замечательный assert introspection, так что легко найти различия в строках, особенно если разница в белом пространстве. Теперь я использую несколько сложный тестовый помощник, который я использую во многих тестовых файлах. У помощника есть свой собственный модуль, и для этого модуля я хочу добавить assert introspection.pytest assert introspection в вспомогательной функции

helpers.py:

... 
def my_helper(): 
    assert 'abcy' == 'abcx' 

test_mycase.py:

from .helpers import my_helper 


def test_assert_in_tc(): 
    assert 'abcy' == 'abcx' 


def test_assert_in_helper(): 
    my_helper() 

отчет тест показывает полезную информацию для утверждает в тестах, но not for asserts within the helper:

=============================================================== FAILURES ================================================================ 
___________________________________________________________ test_assert_in_tc ___________________________________________________________ 

    def test_assert_in_tc(): 
>  assert 'abcy' == 'abcx' 
E  assert 'abcy' == 'abcx' 
E   - abcy 
E   ? ^
E   + abcx 
E   ? ^

tests/test_pytest_assert.py:9: AssertionError 
_________________________________________________________ test_assert_in_helper _________________________________________________________ 

    def test_assert_in_helper(): 
>  my_helper() 

tests/test_pytest_assert.py:13: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    def my_helper(): 
>  assert 'abcy' == 'abcx' 
E  AssertionError 

tests/helpers.py:258: AssertionError 
======================================================= 2 failed in 0.24 seconds ======================================================== 

В качестве обходного пути я выводил дополнительную информацию с помощью assert, но вывод по-прежнему выглядит странно и приводит к взрыву кода. Любые идеи, как я могу активировать pytest, утверждают интроспекцию в хелпер-файле?

Я нашел different, but related question, к сожалению, я не мог получить решение работает до сих пор:

import pytest 
from .helpers import my_helper 
pytest.register_assert_rewrite('helpers.my_helper') 
+0

я должен был поместите register_assert_rewrite в файл \ _ \ _ init \ _ \ _. py. теперь он работает ... возможно, лучше всего удалить вопрос, не так ли? – mark

+0

Не удаляйте вопрос, я просто столкнулся с этой проблемой. Итак, thx. – alejandrodnm

ответ

3

я должен был поставить register_assert_rewrite в тестах/__ init__.py так:

import pytest 

# we want to have pytest assert introspection in the helpers 
pytest.register_assert_rewrite('tests.helpers') 
+0

Вы можете принять его как правильный ответ. – alejandrodnm