Утверждение Pytest не показывает различий на AssertionError - PullRequest
0 голосов
/ 26 октября 2018

Недавно я узнал об использовании Pytest для выполнения юнит-тестов в Python. Я поиграл с этим в Repl.it , выполнив простое утверждение для двух разных строк, которые должны потерпеть неудачу.

import pytest
assert 'a' == 'b'

Что не получается с ошибкой Traceback (most recent call last): File "python", line 2, in <module> AssertionError

Однако Pytest не печатает «a» или «b». Это было бы очень полезно при отладке, так как я могу сравнить различия между двумя разными строками. Модуль unittest имеет эту функцию по умолчанию. Есть ли у Pytest эта функция? Если нет, то как мне его включить? Я использую Pytest для более крупного проекта и хотел бы выяснить это, прежде чем продолжить работу.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Также см. переписывание утверждений , если ваш код подтверждения находится во внешней вспомогательной функции.

Это было проблемой для меня, но исправлено добавлением pytest.register_assert_rewrite('path.to.helper') в __init__.py втестовый каталог.

0 голосов
/ 26 октября 2018

Если вы хотите увидеть ошибку подтверждения, вы добавляете строку после оператора assert.Это не проблема Pytest.Пример: assert a == b , "a:{} is not equal to b:{}".format(a,b)

Будет выведено:

In [5]: assert a == b , "a:{} is not equal to b:{}".format(a,b)
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-5-35a1ba6dcf42> in <module>()
----> 1 assert a == b , "a:{} is not equal to b:{}".format(a,b)

AssertionError: a:5 is not equal to b:6

Дополнительная информация о python assert: https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...