match в pytest ищет регулярное выражение
Тест с
Параметр
Ещё одна деталь контракта pytest: поиск учитывает заметки
Тест с
pytest.raises(ValueError, match="bad.file") может пройти на сообщении badXfile. Точка здесь означает любой символ, а не буквальную точку в имени файла. И совпадать со всем сообщением шаблон тоже не обязан.Параметр
match использует re.search. Для буквального фрагмента передайте re.escape("bad.file"). Это защитит метасимволы, но по-прежнему будет искать фрагмент внутри более длинной строки. Если важно полное равенство, отдельно сравните str(exc.value) с ожидаемым текстом.Ещё одна деталь контракта pytest: поиск учитывает заметки
__notes__ из PEP 678. На Python 3.11+ совпадение может найтись в добавленной заметке, хотя его нет в основном сообщении исключения.❤1