Мы определили все наши пользовательские утверждения в отдельном файле python, который не является тестовым модулем.Как утверждать, что pytest rewrite утверждать в не-тестовых модулях
Например: custom_asserts.py
class CustomAsserts(object):
def silly_assert(self, foo, bar):
assert foo == bar , 'some error message'
Если мы используем assert
непосредственно в тестах, мы получим дополнительную информацию о AssertionError, что очень полезно.
Выход непосредственно использовать утверждают в тестах:
> assert 'foo' == 'bar', 'some error message'
E AssertionError: some error message
E assert 'foo' == 'bar'
E - foo
E + bar
Но мы обнаружили, что если мы вызываем метод утверждения мы определили в отдельном модуле, дополнительная информация не будет отображаться.
from custom_asserts import CustomAsserts
asserts = CustomAsserts()
def test_silly():
asserts.silly_assert('foo', 'bar')
Output после запуска теста:
> assert 'foo' == 'bar', 'some error message'
E AssertionError: some error message
И мы также нашли это pytest документы: Advanced assertion introspection
pytest только переписывает тестовые модули, непосредственно обнаруженные его процессом сбора тест , поэтому утверждает, что модули поддержки, которые не являются , сами тестовые модули не будут перезаписаны.
Итак, мой вопрос в том, есть ли способ позволить pytest сделать то же самое утверждение, переписывая другие модули, как и тестовые модули? Или есть какой-то хакерский способ добиться этого?
[Ответ на ваш вопрос в порядке, даже рекомендуется!] (Http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) Веб-интерфейс даже предполагает, что вы можете написать свой вопрос и сразу же ответить на него, как метод документирования и обмена чем-то важным, который вы обнаружили при разработке программного обеспечения. – clacke