Description
- a detailed description of the bug or problem you are having
Description
There seems to be an inconsistency with how ANSI escape codes for colored output are handled in the failure reason when using pytest.fail()
with pytrace=True
versus pytrace=False
.
In the case where pytrace=True
, the colored output is rendered correctly in the failure message. However, when pytrace=False
, the ANSI escape codes are not processed, and they partly appear as raw text in the terminal output.
- minimal example if possible
Steps to Reproduce
from pytest import fail
def test_color_pytrace_true():
fail(reason="\n\x1b[34mThis should be blue\x1b[0m", pytrace=True)
def test_color_pytrace_false():
fail(reason="\n\x1b[34mThis should be blue\x1b[0m", pytrace=False)
Expected Behavior:
For pytrace=True
: The ANSI escape codes for blue text (\x1b[34m...
) should render correctly, resulting in the phrase "This should be blue" being displayed in blue.
For pytrace=False
: The ANSI escape codes should still render the text in blue.
Actual Behavior:
For pytrace=True
: The colored output is handled correctly, and the text "This should be blue" is displayed in blue.
For pytrace=False
: The ANSI escape codes are partly displayed as raw text ([34mThis should be blue[0m
), and the text is not colored.
Output from running the test

- output of
pip list
from the virtual environment you are using
Package Version Editable project location
------------------------- ------------------------------- -----------------------------------
aiofiles 24.1.0
aiohttp 3.9.5
aiosignal 1.3.1
annotated-types 0.6.0
anyio 4.3.0
argcomplete 3.2.3
async-timeout 4.0.3
asyncio 3.4.3
attrs 23.2.0
backports.tarfile 1.1.1
beautifulsoup4 4.12.3
binary 1.0.0
black 24.3.0
blessed 1.20.0
boltons 21.0.0
bracex 2.4
build 1.2.1
cachetools 5.3.3
certifi 2024.2.2
cfgv 3.4.0
charset-normalizer 3.3.2
click 8.1.7
click-option-group 0.5.6
colorama 0.4.6
contourpy 1.2.1
coverage 7.4.4
cycler 0.12.1
datamodel-code-generator 0.25.9
deepdiff 6.7.1
defusedxml 0.7.1
distlib 0.3.8
dnspython 2.6.1
docutils 0.21.2
editor 1.6.6
email_validator 2.1.1
et-xmlfile 1.1.0
exceptiongroup 1.2.0
face 22.0.0
filelock 3.13.4
fonttools 4.53.1
frozenlist 1.4.1
genson 1.2.2
geojson 3.1.0
glom 22.1.0
google-api-core 2.19.0
google-auth 2.29.0
google-cloud-bigquery 3.23.0
google-cloud-core 2.4.1
google-crc32c 1.5.0
google-resumable-media 2.7.0
googleapis-common-protos 1.63.0
grpcio 1.63.0
grpcio-status 1.62.2
h11 0.14.0
httpcore 1.0.5
httpx 0.27.0
identify 2.5.35
idna 3.6
importlib_metadata 7.1.0
inflect 5.6.2
iniconfig 2.0.0
inquirer 3.2.4
isodate 0.6.1
isort 5.13.2
jaraco.classes 3.4.0
jaraco.context 5.3.0
jaraco.functools 4.0.1
Jinja2 3.1.3
jsonschema 4.22.0
jsonschema-specifications 2023.12.1
keyring 25.2.0
kiwisolver 1.4.5
libcst 1.3.1
loguru 0.7.2
lxml 5.2.2
markdown-it-py 3.0.0
MarkupSafe 2.1.5
matplotlib 3.9.2
mdurl 0.1.2
more-itertools 10.2.0
multidict 6.0.5
mypy-extensions 1.0.0
nh3 0.2.17
nodeenv 1.8.0
numpy 1.26.4
openpyxl 3.1.2
ordered-set 4.1.0
osm2geojson 0.2.5
packaging 24.0
pandas 2.2.2
pathspec 0.12.1
peewee 3.17.5
pillow 10.4.0
pip 23.0.1
pkginfo 1.10.0
platformdirs 4.2.0
pluggy 1.5.0
pre-commit 3.3.3
prettytable 3.10.0
proto-plus 1.23.0
protobuf 4.25.3
pyasn1 0.6.0
pyasn1_modules 0.4.0
pydantic 2.6.4
pydantic_core 2.16.3
Pygments 2.18.0
pyodata 1.11.1
pyparsing 3.1.4
pypinfo 21.0.0
pyproject_hooks 1.1.0
pytest 8.3.3
pytest-cov 5.0.0
pytest-loguru 0.4.0
python-dateutil 2.9.0.post0
pytz 2024.1
PyYAML 6.0.1
rdflib 7.1.0a0
readchar 4.0.6
readme_renderer 43.0
referencing 0.35.1
requests 2.32.3
requests-toolbelt 1.0.0
rfc3986 2.0.0
rich 13.7.1
rpds-py 0.18.1
rsa 4.9
ruamel.yaml 0.17.40
ruamel.yaml.clib 0.2.8
ruff 0.3.5
runs 1.2.2
semgrep 1.75.0
setuptools 65.5.0
setuptools-scm 8.1.0
shapely 2.0.6
six 1.16.0
sniffio 1.3.1
soupsieve 2.6
SPARQLWrapper 2.0.0
tinydb 4.8.0
tinyrecord 0.2.0
toml 0.10.2
tomli 2.0.1
twine 5.0.0
types-python-dateutil 2.9.0.20240821
types-PyYAML 6.0.12.20240311
types-requests 2.31.0.20240406
typing_extensions 4.11.0
tzdata 2024.1
ujson 5.10.0
Unidecode 1.3.8
urllib3 2.2.1
virtualenv 20.25.1
wcmatch 8.5.2
wcwidth 0.2.13
xarray 2024.7.0
xmod 1.8.1
yarl 1.9.4
zipp 3.18.1
- pytest and operating system versions
pytest 8.3.3
ProductName: macOS
ProductVersion: 14.2.1
BuildVersion: 23C71