Утверждение pytest не показывает различий в assertionerror

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

import pytest
assert 'a' == 'b'

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

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

Вы должны запускать этот модуль с помощью pytest, а не с помощью обычного python!

MisterMiyagi 26.10.2018 06:39

Итак, если я запустил pytest main.py в командной строке, я увижу значение строк? А как насчет моего более крупного проекта, который представляет собой лямбда-функцию AWS в Python? Как тогда мне увидеть струны?

Victor Cui 26.10.2018 06:53

Да, вам нужно запустить pytest main.py. Я понятия не имею о AWS lambda - я не думаю, что он предназначен для запуска автономных приложений. pytest - это фреймворк для модульного тестирования, он не предназначен для использования в обычном коде.

MisterMiyagi 26.10.2018 09:08
pytest предназначен для выполнения тестов, а не сценариев. Если вы создаете сценарий, имя которого начинается с test_, и внутри функции, имя которой начинается с test_, pytest найдет и выполнит его. См. Рабочий пример этот ответ.
hoefling 26.10.2018 10:17

Мой сценарий начинается с test_, а моя функция начинается с test_. Я знаю, что pytest находит и выполняет мой тест, но я ищу способ для pytest вывести разницу между двумя строками в AssertionError.

Victor Cui 26.10.2018 19:20

вероятно, это то, что вы ищете: stackoverflow.com/questions/41522767/…

juggernaut 21.02.2019 14:56
5
6
2 895
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Большое спасибо! Что я все еще делал неправильно, так это путь. Итак, нужен весь путь от корня содержимого.

hiroorih 07.07.2021 21:01

Другие вопросы по теме