Python 为什么pytest输出ANSI转义字符?
当运行下面的pytest代码时,我得到了一个断言错误。出于某种原因,预期的消息是用ansi转义码输出,而不是用颜色输出文本。我使用的是Windows机器、VSCode和git bash作为终端Python 为什么pytest输出ANSI转义字符?,python,pytest,ansi-colors,Python,Pytest,Ansi Colors,当运行下面的pytest代码时,我得到了一个断言错误。出于某种原因,预期的消息是用ansi转义码输出,而不是用颜色输出文本。我使用的是Windows机器、VSCode和git bash作为终端 import click from click.testing import CliRunner from uptimer.uptimer import check def test_check_one_url(mocker): mocker.patch("requests.head&
import click
from click.testing import CliRunner
from uptimer.uptimer import check
def test_check_one_url(mocker):
mocker.patch("requests.head", return_value=mock_response_object(200))
runner = CliRunner()
result = runner.invoke(check, ["dummyurl"], color=True)
expected_message = click.style("dummyurl -> 200", fg="green")
assert result.output == f"{expected_message}\n"
Pytest提供以下输出:
E AssertionError: assert 'dummyurl -> 200\n' == '\x1b[32mdumm... 200\x1b[0m\n'
E - dummyurl -> 200
E ? ----- ----
E + dummyurl -> 200
我能够通过安装一个软件包来去除ansi代码,从而拼凑出一个解决方案
from click.testing import CliRunner
from uptimer.uptimer import check
from strip_ansi import strip_ansi
def test_check_one_url(mocker):
mocker.patch("requests.head", return_value=mock_response_object(200))
runner = CliRunner()
result = runner.invoke(check, ["dummyurl"], color=True)
expected_message = strip_ansi(click.style("dummyurl -> 200", fg="green"))
assert result.output == f"{expected_message}\n"